Menu
Coddy logo textTech

Self join

Fa parte della sezione Fondamenti del percorso SQL di Coddy. Lezione 46 di 72.

Le auto-join sono un tipo diverso di join. Finora abbiamo parlato di join tra più tabelle, ma gli auto-join collegano la stessa tabella. Un esempio classico potrebbe essere una tabella di dipendenti.

employee_idemployee_namemanager_id
1Minke2
2Temur3
3Tatjana4
4Marinela 

Ogni dipendente ha un manager, tranne il manager di grado più alto, e ogni manager è anche un dipendente.

Il problema: per ogni dipendente vogliamo conoscere il nome del manager.

SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_id

Eseguiamo una join sulla stessa tabella, ma una volta la chiamiamo e1 e la seconda volta e2. La join avviene tra i campi employee_id e manager_id.

Il risultato:

employee_idemployee_namemanager_name
1MinkeTemur
2TemurTatjana
3TatjanaMarinela
challenge icon

Sfida

Medio

Tabelle e colonne disponibili:

  • friends: id, name, friend_id

Trova le coppie di amici che sono amici reciproci (l’amicizia reciproca esiste quando il friend_id della persona A punta alla persona B E il friend_id della persona B punta alla persona A). Mostra i nomi di entrambi gli amici in un’unica riga. Chiama le colonne friend1 e friend2.

Nota: includi nella clausola WHERE il criterio friend1.id < friend2.id in modo da non includere coppie duplicate 

Provalo tu

-- Unisci la tabella a se stessa in modo che una riga possa mostrare due persone diverse
SELECT ____ AS friend1, ____ AS friend2
FROM friends f1
JOIN friends f2 ON ____
-- Conserva solo le coppie che si riferiscono l'una all'altra
WHERE ____ AND f1.id < f2.id;
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground SQL