Un JOIN combină rânduri din două tabele potrivind o condiție, de obicei o foreign key. Tipul de join decide ce se întâmplă cu rândurile care nu au potrivire pe cealaltă parte.
Un JOIN combină rânduri din două tabele potrivind o condiție, de obicei o foreign key. Tipul de join decide ce se întâmplă cu rândurile care nu au potrivire pe cealaltă parte.
NULL.-- customers(id, name) orders(id, customer_id, total)
-- INNER: doar clienții care au cel puțin o comandă
SELECT c.name, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;
-- LEFT: fiecare client, chiar și cei cu zero comenzi (total = NULL)
SELECT c.name, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
-- Utilizare clasică: găsește clienții FĂRĂ comenzi
SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.id IS NULL; -- partea NULL a LEFT JOIN dezvăluie golul
WHERE (ex. WHERE o.total > 100) transformă în tăcere un LEFT JOIN înapoi într-un INNER JOIN, pentru că NULL > 100 este fals. Pune astfel de condiții în clauza ON dacă vrei să păstrezi rândurile nepotrivite.Majoritatea interogărilor reale se întind pe mai multe tabele, iar tipul greșit de join elimină sau dublează rânduri în tăcere — un bug care returnează rezultate plauzibile. Să știi că LEFT JOIN + IS NULL găsește rândurile "lipsă", și că un WHERE pe partea nulă anulează LEFT-ul, previne o întreagă clasă de erori de raportare.
O bibliotecă de întrebări de interviu IT cu răspunsuri detaliate — de la Junior la Senior.
Donează