Join avanzati
SELF JOIN e CROSS JOIN
Sezione intitolata “SELF JOIN e CROSS JOIN”Non tutte le join collegano due tabelle diverse. A volte una tabella va collegata a se stessa; altre volte servono tutte le combinazioni 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 usarle
Sezione intitolata “Quando usarle”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.