Sobes.tech
Junior

Mi a különbség az INNER JOIN és az OUTER JOIN között?

sobes.tech MI

Válasz az MI-től

INNER JOIN csak azokat a sorokat adja vissza, amelyek megfelelnek a csatlakozási feltételnek mindkét táblában. Ha az egyik táblában nincs megfelelő rekord, akkor az a sor nem kerül az eredménybe.

OUTER JOIN minden sorból az egyik táblában és a másikban a megfelelőt adja vissza, és ha nincs megfelelés, akkor a hiányzó adatok NULL-ként jelennek meg. Három típusú OUTER JOIN létezik:

  • LEFT OUTER JOIN — a bal oldali tábla összes sora + a megfelelők a jobbról;
  • RIGHT OUTER JOIN — a jobb oldali tábla összes sora + a megfelelők a balról;
  • FULL OUTER JOIN — mindkét tábla összes sora, ahol nincs megfelelés, NULL.

Példa:

SELECT * FROM employees INNER JOIN departments ON employees.dept_id = departments.id;
-- csak azokat a munkatársakat adja vissza, akiknek van osztályuk

SELECT * FROM employees LEFT OUTER JOIN departments ON employees.dept_id = departments.id;
-- minden munkatársat visszaad, még akkor is, ha nincs osztályuk (a departments oszlopok NULL lesznek)