Come confrontare i dati nella stessa tabella SQL
Soluzione
Per confrontare i valori delle righe in una stessa tabella SQL (T1) devo usare gli alias per creare una copia della tabella (T2). In questo modo posso confrontare il valore di ogni riga della tabella T1 con i valori di tutte le righe della tabella copia T2.
Esempio
Ho una tabella Studenti con quattro colonne (Nome, Cognome, Età, Città).
Devo trovare gli studenti del corso che vivono nella stessa città, eliminando quelli che non hanno altri conterranei all'ateneo.
Questo problema non posso risolverlo con un'interrogazione semplice.
Nota. Un'interrogazione semplice mi permette il confronto solo tra i valori di ogni riga. Non mi permette il confronto tra valori in righe diverse. Ad esempio, una semplice query SELECT * FROM Studenti ORDER BY città nella tabella precedente elenca tutti gli studenti, compresi quelli che vivono a Napoli e Roma.
Per risolvere il problema scrivo una SELECT su due tabelle.
La prima tabella è quella in cui devo cercare i valori ossia Studenti.
La seconda tabella è una copia della prima tabella ridenominata StudentiCopia con un alias
SELECT *
FROM Studenti, Studenti As StudentiCopia
WHERE (Studenti.Città = StudentiCopia.Città) AND (Studenti.Nome<>StudentiCopia.Nome)
Nella clausola WHERE indico la condizione di ricerca.
L'interrogazione confronta ogni riga della prima tabella (Studenti) con tutte le righe della seconda tabella (StudentiCopia).
Questo mi permette di trovare i valori dell'attributo Città che si ripetono in studenti con Nome diverso.
Nota. Per semplicità non ho aggiunto anche la condizione Cognome diverso nella clausola WHERE.
Il risultato sono i nomi degli studenti che vivono nella stessa città.
In questo modo ho risolto il problema.
E così via