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)