SQLite Self-Join
Riepilogo: in questo tutorial, imparerai a conoscere un tipo speciale di join chiamato SQLite self-join che ti permette di unire la tabella a se stesso.
Nota che dovresti avere familiarità con le clausoleINNER JOIN
eLEFT JOIN
prima di andare avanti con questo tutorial.
Introduzione a SQLite self-join
Il self-join è un tipo speciale di join che consente di unire una tabella a se stessa utilizzando la clausolaLEFT JOIN
oINNER JOIN
. Si utilizza self-join per creare un set di risultati che unisce le righe con le altre righe all’interno della stessa tabella.
Poiché non è possibile fare riferimento alla stessa tabella più di una in una query, è necessario utilizzare un alias di tabella per assegnare alla tabella un nome diverso quando si utilizza self-join.
Il self-join confronta i valori della stessa o di colonne diverse nella stessa tabella. Solo un tavolo è coinvolto nel self-join.
Si utilizza spesso self-join per interrogare la relazione genitori / figlio memorizzata in una tabella o per ottenere i totali correnti.
SQLite self-join examples
Useremo la tabellaemployees
nel database di esempio per la dimostrazione.
La tabellaemployees
memorizza non solo i dati dei dipendenti, ma anche quelli organizzativi. La colonna ReportsTo
specifica la relazione di reporting tra i dipendenti.
Se un dipendente segnala a un manager, il valore della colonna ReportsTo
della riga del dipendente è uguale al valore della colonna EmployeeId
della riga del manager. Nel caso in cui un dipendente non riferisca a nessuno, la colonnaReportsTo
NULL
.
Per ottenere le informazioni su chi è il rapporto diretto di chi, si utilizza la seguente dichiarazione:
Provalo
L’istruzione utilizzava la clausola INNER JOIN
per unirsi alla employees
a se stesso. La tabellaemployees
ha due ruoli: dipendenti e manager.
Poiché abbiamo usato la clausolaINNER JOIN
per unire la tabellaemployees
a se stessa, il set di risultati non ha la riga la cui colonna manager contiene un valoreNULL
.
Si noti che l’operatore di concatenazione||
concatena più stringhe in una singola stringa. Nell’esempio, usiamo l’operatore di concatenazione dai nomi completi dei dipendenti concatenando il nome, lo spazio e il cognome.
Nel caso in cui si desideri interrogare il CEO che non segnala a nessuno, è necessario modificare la clausola INNER JOIN
in LEFT JOIN
nella query sopra.
Andrew Adams
è l’amministratore delegato perché non segnala nessuno.
È possibile utilizzare la tecnica self-join per trovare i dipendenti situati nella stessa città della seguente query:
Provalo
La condizione join ha due espressioni:
-
e1.city = e2.city
per assicurarsi che sia i dipendenti che si trova nella stessa città -
e.firstname <> e2.firstname AND e1.lastname <> e2.lastname
per garantire che ile1
ee2
non sono lo stesso dipendente, con il presupposto che non ci sono dipendenti che hanno lo stesso nome e cognome.
In questo tutorial, vi abbiamo mostrato come utilizzare la tecnica SQLite self-join per unire un tavolo a se stesso.
- Questo tutorial è stato utile ?
- Sì