Sobes.tech
Junior

Kuo skiriasi INNER JOIN nuo OUTER JOIN?

sobes.tech AI

Atsakymas iš AI

INNER JOIN grąžina tik tas eilutes, kurios turi atitikimus abiejose lentelėse pagal jungimo sąlygą. Jei vienoje iš lentelių nėra atitinkančio įrašo, ši eilutė nebus įtraukta į rezultatą.

OUTER JOIN grąžina visas eilutes iš vienos lentelės ir atitinkančias iš kitos, o jei atitikimų nėra, trūkstami duomenys bus NULL. Yra trys OUTER JOIN tipai:

  • LEFT OUTER JOIN — visos kairės lentelės eilutės + atitinkančios iš dešinės;
  • RIGHT OUTER JOIN — visos dešinės lentelės eilutės + atitinkančios iš kairės;
  • FULL OUTER JOIN — visos abiejų lentelių eilutės, kur nėra atitikimų, NULL.

Pavyzdys:

SELECT * FROM employees INNER JOIN departments ON employees.dept_id = departments.id;
-- grąžins tik darbuotojus, turinčius skyrių

SELECT * FROM employees LEFT OUTER JOIN departments ON employees.dept_id = departments.id;
-- grąžins visus darbuotojus, net jei neturi skyriaus (stulpeliuose departments bus NULL)