Sobes.tech
Junior

Care este diferența dintre INNER JOIN și OUTER JOIN?

sobes.tech AI

Răspuns de la AI

INNER JOIN returnează doar acele rânduri care au corespondențe în ambele tabele conform condiției de join. Dacă într-una dintre tabele nu există o înregistrare corespunzătoare, acel rând nu va apărea în rezultat.

OUTER JOIN returnează toate rândurile dintr-o tabelă și cele corespunzătoare din cealaltă, iar dacă nu există corespondențe, în locurile lipsă vor fi NULL. Există trei tipuri de OUTER JOIN:

  • LEFT OUTER JOIN — toate rândurile din tabelul din stânga + cele corespunzătoare din dreapta;
  • RIGHT OUTER JOIN — toate rândurile din tabelul din dreapta + cele corespunzătoare din stânga;
  • FULL OUTER JOIN — toate rândurile din ambele tabele, unde nu există corespondențe, NULL.

Exemplu:

SELECT * FROM employees INNER JOIN departments ON employees.dept_id = departments.id;
-- va returna doar angajații care au departament

SELECT * FROM employees LEFT OUTER JOIN departments ON employees.dept_id = departments.id;
-- va returna toți angajații, chiar dacă nu au departament (în coloanele departments va fi NULL)