Sobes.tech
Junior

Czym różni się INNER JOIN od OUTER JOIN?

sobes.tech AI

Odpowiedź od AI

INNER JOIN zwraca tylko te wiersze, które mają dopasowania w obu tabelach zgodnie z warunkiem połączenia. Jeśli w jednej z tabel nie ma odpowiedniego wpisu, ten wiersz nie pojawi się w wyniku.

OUTER JOIN zwraca wszystkie wiersze z jednej tabeli i odpowiadające im z drugiej, a jeśli dopasowania nie ma, w miejscach brakujących danych pojawi się NULL. Istnieją trzy rodzaje OUTER JOIN:

  • LEFT OUTER JOIN — wszystkie wiersze z lewej tabeli + dopasowane z prawej;
  • RIGHT OUTER JOIN — wszystkie wiersze z prawej tabeli + dopasowane z lewej;
  • FULL OUTER JOIN — wszystkie wiersze obu tabel, tam gdzie nie ma dopasowania, NULL.

Przykład:

SELECT * FROM employees INNER JOIN departments ON employees.dept_id = departments.id;
-- zwróci tylko pracowników, którzy mają dział

SELECT * FROM employees LEFT OUTER JOIN departments ON employees.dept_id = departments.id;
-- zwróci wszystkich pracowników, nawet jeśli nie mają działu (w kolumnach departments będzie NULL)