Typy złączeń (join) w SQL - jakie są i jak działają?


Złączenia możemy podzielić na dwa podstawowe typy: wewnętrzne i zewnętrzne. Wynikiem złączeń wewnętrznych są jedynie wiersze spełniające warunek. Są one także domyślnym typem złączeń.

Jako przykład weźmiemy tabelę A oraz tabelę B. Obydwie zawierają tylko jedną kolumnę o nazwie Id, dane które są tam zapisane to litery alfabetu.
(Przedstawione zostały w dwóch formach w celu łatwiejszego zrozumienia)



Złączenie wewnętrzne

INNER JOIN lub po prostu JOIN - wynikiem złączenia będą jedynie te wiersze z obu tabel, które udało się dopasować na podstawie zadanego warunku. Inaczej mówiąc efektem będzie część wspólna.

SELECT * 
FROM TabelaA a
JOIN TabelaB b on a.Id = b.Id

CROSS JOIN - wynikiem złączenia będą wszystkie wiersze z tabeli A połączone ze wszystkimi wierszami tabeli B (iloczyn kartezjański).

SELECT * 
FROM TabelaA a
CROSS JOIN TabelaB b

OUTER JOIN - złączenia zewnętrzne

LEFT OUTER JOIN lub po prostu LEFT JOIN - wynikiem złączenia będą wszystkie wiersze z tabeli A oraz dopasowane do nich wiersze z tabeli B na podstawie zadanego warunku. W przypadku, gdy nie będzie możliwości dopasowania rekordu z tabeli B, przypisana zostanie wartość NULL.

SELECT * 
FROM TabelaA a
LEFT JOIN TabelaB b on a.Id = b.Id


RIGHT OUTER JOIN lub po prostu RIGHT JOIN - wynikiem złączenia będą wszystkie wiersze z tabeli B oraz dopasowane do nich wiersze z tabeli A na podstawie zadanego warunku. W przypadku, gdy nie będzie możliwości dopasowania rekordu z tabeli A, przypisana zostanie wartość NULL.

SELECT * 
FROM TabelaA a
RIGHT JOIN TabelaB b on a.Id = b.Id

FULL OUTER JOIN lub po prostu FULL JOIN - wynikiem złączenia będą wszystkie wiersze z tabeli A oraz B. Jeśli będzie to możliwe, nastąpi dopasowanie wierszy z obu tabel na podstawie zadanego warunku. W przypadku gdy dopasowanie wierszy nie będzie możliwe, jako wartość z drugiej tabel zostanie przypisana wartość NULL.

SELECT * 
FROM TabelaA a
FULL JOIN TabelaB b on a.Id = b.Id


© 2021 - SkillsTest.pl | | Regulamin | Polityka Prywatnosci