Join avanzati
Quando le join normali non bastano
Sezione intitolata “Quando le join normali non bastano”Non tutte le join servono a collegare due tabelle diverse. A volte devi unire una tabella con se stessa. Altre volte vuoi generare tutte le combinazioni possibili tra due insiemi.
Qui entrano in gioco SELF JOIN e CROSS JOIN.
SELF JOIN
Sezione intitolata “SELF JOIN”Con SELF JOIN una tabella viene collegata a se stessa.
SELECT d.nome AS dipendente, r.nome AS responsabileFROM dipendenti AS dLEFT JOIN dipendenti AS r ON d.responsabile_id = r.id;Questo succede perché nella tabella dipendenti ogni persona può avere un responsabile che è, a sua volta, un altro dipendente.
CROSS JOIN
Sezione intitolata “CROSS JOIN”CROSS JOIN crea tutte le combinazioni possibili tra due tabelle.
SELECT colori.nome, taglie.nomeFROM coloriCROSS JOIN taglie;Se hai 3 colori e 4 taglie, il risultato avrà 12 righe.
Quando hanno senso
Sezione intitolata “Quando hanno senso”SELF JOIN è utile per strutture gerarchiche, come:
- dipendente e responsabile
- categoria e sotto-categoria
- persona e referente
CROSS JOIN è utile quando vuoi costruire tutte le combinazioni teoriche, per esempio colori e taglie di un catalogo.