Sobes.tech
Junior

V čom sa líši INNER JOIN od OUTER JOIN?

sobes.tech AI

Odpoveď od AI

INNER JOIN vracia iba tie riadky, ktoré majú zhody v oboch tabuľkách podľa podmienky spojenia. Ak v jednej z tabuliek nie je zodpovedajúci záznam, tento riadok sa nezobrazí vo výsledku.

OUTER JOIN vracia všetky riadky z jednej tabuľky a zodpovedajúce z druhej, a ak zhody nie sú, na miestach chýbajúcich údajov budú NULL. Existujú tri typy OUTER JOIN:

  • LEFT OUTER JOIN — všetky riadky z ľavej tabuľky + zodpovedajúce z pravej;
  • RIGHT OUTER JOIN — všetky riadky z pravej tabuľky + zodpovedajúce z ľavej;
  • FULL OUTER JOIN — všetky riadky oboch tabuliek, kde nie sú zhody, NULL.

Príklad:

SELECT * FROM employees INNER JOIN departments ON employees.dept_id = departments.id;
-- vráti iba zamestnancov, ktorí majú oddelenie

SELECT * FROM employees LEFT OUTER JOIN departments ON employees.dept_id = departments.id;
-- vráti všetkých zamestnancov, aj tých bez oddelenia (v stĺpcoch departments bude NULL)