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_id | employee_name | manager_id |
| 1 | Minke | 2 |
| 2 | Temur | 3 |
| 3 | Tatjana | 4 |
| 4 | Marinela |
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_idEseguiamo 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_id | employee_name | manager_name |
|---|---|---|
| 1 | Minke | Temur |
| 2 | Temur | Tatjana |
| 3 | Tatjana | Marinela |
Sfida
MedioTabelle 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;Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Altre parole chiave
La parola chiave INLa parola chiave BETWEENLa parola chiave LIKELa parola chiave ASRiepilogo - Modelli di telefoni cellulari2Condizioni
Basi delle condizioniLa parola chiave ANDLa parola chiave ORLa parola chiave NOTCombinare più condizioniParentesiValori booleani5Operazioni aritmetiche
Operatori matematiciColonne matematicheL’operazione moduloLa funzione ROUND()3Formato di restituzione specifico
Valori nullOrdinare i risultati Parte 1Ordinare i risultati Parte 2Riepilogo - Azienda di sicurezza informaticaLimitare il numero di recordRiepilogo - Fabbrica di veicoli6Sfide introduttive
Ripasso - Elezione parlamentareRipasso - Arresto di un criminale da parte della poliziaRipasso - Contenitore per bevande da barRipasso - Progetta nuove colonne9Tabelle multiple
JOIN di base, parte 1JOIN di base, parte 2Riepilogo - JOINSelf joinRiepilogo - Self joinUNIONSemplificare le query, parola chiave WITHRiepilogo - Query con WITHRiepilogo - Impresa edile immobiliare12Funzioni finestra, parte 2
Funzioni RANK e DENSE_RANKRipasso: RANK e DENSE_RANKFunzione NTILEFunzioni di aggregazioneCriteri ROWS e RANGEEsercitati da solo: Playground SQL