SQLite
 sql >> Database >  >> RDS >> SQLite

Accesso automatico a SQLite

Riepilogo :in questo tutorial imparerai a conoscere un tipo speciale di join chiamato SQLite self-join che ti consente di unire la tabella a se stessa.

Tieni presente che dovresti avere familiarità con INNER JOIN e LEFT JOIN clausole prima di procedere con questo tutorial.

Introduzione al self-join di SQLite

Il self-join è un tipo speciale di join che ti consente di unire una tabella a se stessa usando LEFT JOIN o INNER JOIN clausola. Utilizzi l'unione automatica per creare un set di risultati che unisca 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 l'unione automatica.

Il self-join confronta i valori delle stesse colonne o di colonne diverse nella stessa tabella. Solo una tabella è coinvolta nel self-join.

Utilizzi spesso il self-join per interrogare la relazione genitori/figli archiviata in una tabella o per ottenere totali parziali.

Esempi di unione automatica SQLite

Useremo i employees tabella nel database di esempio per la dimostrazione.

I employees la tabella memorizza non solo i dati dei dipendenti ma anche i dati dell'organizzazione. Il ReportsTo la colonna specifica la relazione di rendicontazione tra i dipendenti.

Se un dipendente segnala a un manager, il valore di ReportsTo colonna della riga del dipendente è uguale al valore di EmployeeId colonna della riga del manager. Nel caso in cui un dipendente non segnali a nessuno, il ReportsTo la colonna è NULL .

Per ottenere le informazioni su chi è il diretto riporto di chi, utilizza la seguente dichiarazione:

SELECT m.firstname || ' ' || m.lastname AS 'Manager',
       e.firstname || ' ' || e.lastname AS 'Direct report' 
FROM employees e
INNER JOIN employees m ON m.employeeid = e.reportsto
ORDER BY manager;Code language: SQL (Structured Query Language) (sql)

Provalo

L'istruzione utilizzava il INNER JOIN clausola per entrare a far parte dei employees a se stesso. I employees table ha due ruoli:dipendenti e manager.

Perché abbiamo usato il INNER JOIN clausola per entrare a far parte dei employees tabella a se stessa, il set di risultati non ha la riga la cui colonna manager contiene un NULL valore.

Nota che l'operatore di concatenazione || concatena più stringhe in un'unica stringa. Nell'esempio, utilizziamo l'operatore di concatenazione per dai nomi completi dei dipendenti concatenando il nome, lo spazio e il cognome.

Nel caso tu voglia interrogare il CEO che non riporta a nessuno, devi cambiare il INNER JOIN clausola su LEFT JOIN clausola nella query precedente.

Andrew Adams è l'amministratore delegato perché non segnala nessuno.

Puoi utilizzare la tecnica di adesione automatica per trovare i dipendenti che si trovano nella stessa città come nella seguente query:

SELECT DISTINCT
	e1.city,
	e1.firstName || ' ' || e1.lastname AS fullname
FROM
	employees e1
INNER JOIN employees e2 ON e2.city = e1.city 
   AND (e1.firstname <> e2.firstname AND e1.lastname <> e2.lastname)
ORDER BY
	e1.city;Code language: SQL (Structured Query Language) (sql)

Provalo

La condizione di unione ha due espressioni:

  • e1.city = e2.city per assicurarsi che entrambi i dipendenti si trovino nella stessa città
  • e.firstname <> e2.firstname AND e1.lastname <> e2.lastname per garantire che e1 e e2 non sono lo stesso dipendente con il presupposto che non ci siano dipendenti che hanno lo stesso nome e cognome.

In questo tutorial, ti abbiamo mostrato come utilizzare la tecnica di unione automatica di SQLite per unire una tabella a se stessa.