Sobes.tech
Junior

Каква е разликата между INNER JOIN и OUTER JOIN?

sobes.tech AI

Отговор от AI

INNER JOIN връща само редовете, които имат съвпадения и в двете таблици според условието за свързване. Ако в една от таблиците няма съответен запис, този ред няма да бъде включен в резултата.

OUTER JOIN връща всички редове от една таблица и съответните от другата, а ако няма съвпадения, липсващите данни ще бъдат NULL. Има три вида OUTER JOIN:

  • LEFT OUTER JOIN — всички редове от лявата таблица + съвпадащите от дясната;
  • RIGHT OUTER JOIN — всички редове от дясната таблица + съвпадащите от лявата;
  • FULL OUTER JOIN — всички редове и от двете таблици, където няма съвпадение, NULL.

Пример:

SELECT * FROM employees INNER JOIN departments ON employees.dept_id = departments.id;
-- ще върне само служителите, които имат отдел

SELECT * FROM employees LEFT OUTER JOIN departments ON employees.dept_id = departments.id;
-- ще върне всички служители, дори и да нямат отдел (в колоните departments ще бъде NULL)