Sobes.tech
Junior

Čím se liší INNER JOIN od OUTER JOIN?

sobes.tech AI

Odpověď od AI

INNER JOIN vrací pouze řádky, které mají shody v obou tabulkách podle podmínky spojení. Pokud v jedné z tabulek není odpovídající záznam, tento řádek se nezobrazí ve výsledku.

OUTER JOIN vrací všechny řádky z jedné tabulky a odpovídající z druhé, a pokud shody nejsou, na místech chybějících dat budou NULL. Existují tři typy OUTER JOIN:

  • LEFT OUTER JOIN — všechny řádky z levé tabulky + odpovídající z pravé;
  • RIGHT OUTER JOIN — všechny řádky z pravé tabulky + odpovídající z levé;
  • FULL OUTER JOIN — všechny řádky obou tabulek, kde není shoda, NULL.

Příklad:

SELECT * FROM employees INNER JOIN departments ON employees.dept_id = departments.id;
-- vrátí pouze zaměstnance, kteří mají oddělení

SELECT * FROM employees LEFT OUTER JOIN departments ON employees.dept_id = departments.id;
-- vrátí všechny zaměstnance, i když nemají oddělení (ve sloupcích departments bude NULL)