Articles

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

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 JOINin 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 il e1 e e2 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 ?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *