Supponiamo di lavorare con un database spatialite e di voler confrontare due geotabelle – che hanno stessa struttura – ma aggiornate in tempi diversi oppure popolate da diversi utenti: come confrontare le due tabelle (o una selezione di campi) per selezionare le righe diverse? utilizzando l’operatore EXCEPT di SQLite:
SELECT select_list1
FROM table1
EXCEPT
SELECT select_list2
FROM table2
Questa query deve essere conforme alle seguenti regole:
- il numero di colonne di selezione di entrambe le query deve essere uguale;
- l’ordine delle colonne e i loro tipi devono essere comparabili.
L’operatore SQLITE EXCEPT viene utilizzato per restituire tutte le righe nella prima istruzione SELECT che nonvengono restituite dalla seconda istruzione SELECT ; confronta anche i campi geometry.
Esempio:
GeoTabella Reg2016_WGS84 e un clone Reg2016_WGS84_test, in QGIS vedo:
modifico solo la geometria del layer Reg2016_WGS84_test (quello rosso) ed rieseguo la query:

ottengo una riga che corrisponde alla feature modificata.
Nell’esempio ho modificato il campo geometry ma vale per qualsiasi tipologia di campo.
Come usarlo in QGIS
QGIS permette di utilizzare questo operatore su qualsiasi dataset (shapefile, CSV, ecc…) attraverso l’uso dei Virtual Layer: un esempio di uso potrebbe essere quello di controllare se due dataset (uno shapefile e un csv), messi in JOIN usando un campo comune, hanno tutti i valori del campo uguali e poter individuare quali valori sono scritti male.
Riferimenti:
Davvero ottimo, mi ripeto sempre, ma ottimo ! grazie!
"Mi piace"Piace a 1 persona
Grazie Luca. 😉
"Mi piace""Mi piace"