Menu
CoddyTech

Self join

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

Gli auto-join sono tipi diversi di join. Finora abbiamo parlato di join tra più tabelle, ma gli auto-join vengono eseguiti sulla stessa tabella. Un esempio classico potrebbe essere una tabella di dipendenti.

employee_idemployee_namemanager_id
1Minke2
2Temur3
3Tatjana4
4Marinela 

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

Il problema: per ogni dipendente vogliamo sapere 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 un join tra la stessa tabella, ma una volta la chiamiamo e1 e la seconda volta e2. Il 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 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 f1.id < f2.id (f1 e f2 sono gli alias delle due copie della tabella), in modo da non includere coppie duplicate 

Provalo tu

-- Unisci la tabella a sé stessa in modo che una riga possa mostrare due persone diverse
SELECT ____ AS friend1, ____ AS friend2
FROM friends f1
JOIN friends f2 ON ____
-- Mantieni solo le coppie in cui ciascuna persona fa riferimento 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