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.
come confrontare i valori in una stessa tabella

Esempio

Ho una tabella Studenti con quattro colonne (Nome, Cognome, Età, Città).

una tabella di esempio

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).

come confrontare i valori in una stessa tabella

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à.

il risultato finale della select

In questo modo ho risolto il problema.

E così via

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

SQL