Un JOIN combina le righe di due tabelle facendo corrispondere una condizione, di solito una foreign key. Il tipo di join decide cosa succede alle righe che non hanno corrispondenza sull'altro lato.
Un JOIN combina le righe di due tabelle facendo corrispondere una condizione, di solito una foreign key. Il tipo di join decide cosa succede alle righe che non hanno corrispondenza sull'altro lato.
NULL.-- customers(id, name) orders(id, customer_id, total)
-- INNER: solo i clienti che hanno almeno un ordine
SELECT c.name, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;
-- LEFT: ogni cliente, anche quelli con zero ordini (total = NULL)
SELECT c.name, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
-- Uso classico: trovare i clienti SENZA ordini
SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.id IS NULL; -- il lato NULL del LEFT JOIN rivela la lacuna
WHERE (es. WHERE o.total > 100) trasforma silenziosamente un LEFT JOIN di nuovo in un INNER JOIN, perché NULL > 100 è falso. Metti tali condizioni nella clausola ON se vuoi mantenere le righe senza corrispondenza.La maggior parte delle query reali coinvolge più tabelle, e il tipo di join sbagliato elimina o duplica silenziosamente delle righe — un bug che restituisce risultati plausibili. Sapere che LEFT JOIN + IS NULL trova le righe "mancanti", e che un WHERE sul lato null annulla il LEFT, previene un'intera classe di errori nei report.
Una raccolta di domande di colloquio IT con risposte dettagliate — da Junior a Senior.
Dona