Złączenia JOIN w SQL Server 3


1. SQL JOIN – Czym są złączenia JOIN w SQL Server? 

Złączenia SQL JOIN to złączenia poziome. W poprzednim rozdziale poznaliśmy proste złączenie z relacją wprowadzaną w klauzuli WHERE. Przykład był jedynie uproszczeniem. Takie samo złączenie możemy wykonać korzystając ze złączeń JOIN. Profesjonalnie napisany kod SQL zawiera te właśnie złączenia. Złączenia JOIN możemy podzielić na dwie podstawowe grupy: wewnętrzne i zewnętrzne. Ogólna postać wszystkich złączeń JOIN jest następująca:

Jak widzimy po frazie ON określamy relacje, za pomocą których łączymy ze sobą tabele lub widoki. JOIN w SQL Server daje nam możliwość łączenia tabel, widoków przechowywanych w różnych schematach, różnych bazach a także na różnych serwerach np za pomocą linków bazodanowych.

2. JOIN w SQL Server – Złączenie wewnętrzne INNER JOIN

Złączenie wewnętrzne to tzw. INNER JOIN. Jest to inna postać złączenia, którą opisaliśmy w poprzednim rozdziale kursu SQL. INNER JOIN zwraca wynik zapytania w postaci rekrodów, dla których w obu tabelach dopasowane są relację. Pokazuje część wspólną. Złączenie wewnętrzne (INNER) JOIN możesz zapisywać w kodzie SQL po prostu frazą JOIN. Wynik obu zapytań będzie taki sam.

Kurs SQL Server - SQL INNER JOIN

Kurs SQL Server – SQL INNER JOIN

Zapiszmy przykład z poprzedniego rozdziału za pomocą złączenia INNER JOIN. Samą relację w złączeniach JOIN określamy po wybraniu tabeli, którą dołączamy jako drugą. Relacja zapisywana jest po frazie ON. np. ON TABELA_1.ID = TABELA_2.ID

 

3. JOIN w SQL Server – Złączenie zewnętrzne LEFT OUTER JOIN

LEFT JOIN lub też zamiennie LEFT OUTER JOIN to złączenie zewnętrzne. Wynikiem zapytania będą wszystkie rekordy z tabeli 1 i tylko te rekordy z tabeli 2, które możemy dopasować. W przypadku, gdy rekord z tabeli 2 nie zostanie dopasowany, wyświetlona zostanie wartość NULL.

 

Kurs SQL Server - SQL LEFT OUTER JOIN

Kurs SQL Server – SQL LEFT OUTER JOIN

Zróbmy krótki przykład z użyciem LEFT JOIN. Połączmy ze sobą tabele SalesPerson i SalesTerritory. Obie tabele możemy połączyć ze sobą za pomocą kolumny TerritoryID. Najważniejsze jest to, że nie wszystkie rekordy z tabeli SalesTerritory można dopasować do tabeli SalesPerson.

Kurs SQL Server - SQL LEFT JOIN

Kurs SQL Server – SQL LEFT JOIN

4. JOIN w SQL Server – Złączenie zewnętrzne RIGHT OUTER JOIN

RIGHT OUTER JOIN lub zamiennie RIGHT JOIN jest dokładną odwrotnością złączenia LEFT. W przypadku łączenia kolejno tabeli 1 i tabeli 2, zostają zwrócone wszystkie rekordy z tabeli 2 i tylko te rekordy z tabeli 1, które możemy dopasować. Podobnie jak w przypadku poprzedniego przykładu, rekordy niedopasowane otrzymają wartość NULL.

Kurs SQL Server - SQL RIGHT OUTER JOIN

Kurs SQL Server – SQL RIGHT OUTER JOIN

Zróbmy krótki przykład i stwórzmy złączenie RIGHT JOIN podobnie jak w poprzednim punkcie:

Kurs SQL Server - SQL RIGHT JOIN

Kurs SQL Server – SQL RIGHT JOIN

5. JOIN w SQL Server – Warunek w klauzuli FROM

Wiemy już, że warunki w kodzie SQL możemy wprowadzać w klauzuli WHERE. Warunki dla danych z tabeli możemy wprowadzać także w klauzuli FROM zaraz za relacją pomiędzy tabelami. Jedyne, co musimy zrobić, to dopisać frazę AND po relacji między tabelami. Same warunki wprowadzamy analogicznie jak w klauzuli WHERE. Poniżej przykład. Dane z tabeli Production.ProductCategory ograniczamy w kolumnie Name do wartości “Bikes”. Warunki w klauzuli FROM i WHERE możemy stosować jednocześnie.

Kurs SQL Server - SQL JOIN - Warunek w JOIN

Kurs SQL Server – SQL JOIN – Warunek w JOIN

6. JOIN w SQL Server – Złączenie zewnętrzne FULL OUTER JOIN

FULL OUTER JOIN lub w skrócie FULL JOIN to złączenie które nie tylko pokazuje wszystkie dopasowane dane z obydwu tabel, ale także dane niedopasowane. W miejscu niedopasowania zapytanie zwróci nam wartość NULL.

Kurs SQL Server - SQL FULL OUTER JOIN

Kurs SQL Server – SQL FULL OUTER JOIN



Jak widzisz, w poprzednim punkcie poznaliśmy warunek zapisywany w klauzuli JOIN. Właśnie w takich przypadkach możemy ten warunek wykorzystać.

Kurs SQL Server - SQL FULL JOIN

Kurs SQL Server – SQL FULL JOIN

7. JOIN w SQL Server – Złączenie krzyżowe CROSS JOIN – złączenie kartezjańskie

Złączenie kartezjańskie CROSS JOIN poznaliśmy już w poprzednim rozdziale szkolenia SQL. Wtedy wykonaliśmy złączenie w klauzuli WHERE bez użycia JOIN’a. Ten sam skrypt możemy zapisać z użyciem złączenia CROSS JOIN. Wynikiem zapytania będą wszystkie rekordy z tabeli 1 połączone ze wszystkimi rekordami z tabeli 2. W przypadku tego złączenia nie określamy relacji. Wszystkie rekordy i tak zostaną w tym wypadku połączone.


Dodaj komentarz

Twój adres email nie zostanie opublikowany.

3 komentarzy do “Złączenia JOIN w SQL Server