Wszystkie rodzaje JOIN w SQL

18 czerwca 2023

rodzaje JOIN w SQL

Cześć! Dzisiaj chciałbym poruszyć temat, który wywołuje sporo zamieszania w głowach początkujących analityków, ale jest absolutnie niezbędny w codziennej pracy z bazami danych. Mowa tu o operacjach JOIN w SQL. W tekście poniżej opiszę główne rodzaje JOIN w SQL.

JOIN jest to operacja, która pozwala łączyć rekordy z różnych tabel w oparciu o pewne kryteria. Wyobraź sobie, że masz dwie puzzle – JOIN to sposób, w jaki te puzzle są układane razem.

INNER JOIN

Rozpoczniemy od najpopularniejszego – INNER JOIN. Ta operacja zwraca tylko te rekordy, które mają pasujące wartości w obu tabelach. To jak nawiązanie znajomości na imprezie tylko z tymi, których znasz zarówno z pracy, jak i ze szkoły.

inner join

Przykładowe zapytanie:

SELECT 
  Orders.order_id
  ,Customers.customer_name
FROM Orders
INNER JOIN Customers ON Orders.customer_id = Customers.customer_id;

W tym przypadku zwrócone zostaną tylko te zamówienia (Orders), dla których mamy odpowiadającego klienta (Customers).

LEFT JOIN (oraz RIGHT JOIN)

Kolejnym na liście jest LEFT JOIN, który zwraca wszystkie rekordy z lewej tabeli i pasujące rekordy z prawej tabeli. Jeśli nie ma pasującego rekordu, wynikiem jest NULL.

left join

Przykładowe zapytanie:

SELECT 
  Orders.order_id
  ,Customers.customer_name
FROM Orders
LEFT JOIN Customers ON Orders.customer_id = Customers.customer_id;

W tym przypadku zwrócone zostaną wszystkie zamówienia, nawet te, dla których nie mamy odpowiadającego klienta.

RIGHT JOIN działa na tej samej zasadzie, tylko w odwrotnym kierunku – zwraca wszystkie rekordy z prawej tabeli i pasujące rekordy z lewej.

right join
SELECT 
  Orders.order_id
  ,Customers.customer_name
FROM Orders
RIGHT JOIN Customers ON Orders.customer_id = Customers.customer_id;

FULL OUTER JOIN

Przechodzimy do JOINów, które rzadziej wyskakują jako rezultat zapytania „główne rodzaje JOIN w SQL”.

FULL OUTER JOIN to taki trochę desperat, który na imprezę zaprosi wszystkich, niezależnie od tego, czy znał ich wcześniej czy nie. Ta operacja zwraca wszystkie rekordy, gdy w lewej lub prawej tabeli jest pasujący rekord.

FULL JOIN

Przykładowe zapytanie:

SELECT 
  Orders.order_id
  ,Customers.customer_name
FROM Orders
FULL OUTER JOIN Customers ON Orders.customer_id = Customers.customer_id;

W tym przypadku zwrócone zostaną wszystkie zamówienia i wszyscy klienci, niezależnie od tego, czy dla zamówienia jest klient, czy dla klienta jest zamówienie.

CROSS JOIN

Na koniec zostawiłem CROSS JOIN, który jest rodzajem operacji iloczynu kartezjańskiego.

Każdy rekord z pierwszej tabeli jest połączony z każdym rekordem z drugiej tabeli. To trochę jak zrobienie imprezy, na której każdy rozmawia z każdym – brzmi jak ekstrawagancka zabawa, ale prawdopodobnie skończy się chaosem!

cross join rodzaje join w sql

Przykładowe zapytanie:

SELECT 
  Orders.order_id
  ,Customers.customer_name
FROM Orders
CROSS JOIN Customers;

W tym przypadku, każde zamówienie zostanie połączone z każdym klientem, niezależnie od tego, czy klient ten faktycznie złożył to zamówienie, czy nie.

To tyle na dziś! Mam nadzieję, że udało mi się przekazać podstawowe różnice między typami JOIN w SQL. Pamiętaj, że praktyka czyni mistrza, więc do dzieła – niech moc JOINów będzie z Tobą!

To tyle w tym temacie. Analizujcie w pokoju!  

Podobał Ci się ten artykuł 🙂?
Podziel się nim w Social Mediach 📱
>>> udostępnij go na LinkedIn i pokaż, że codziennie uczysz się czegoś nowego 
>>> wrzuć go na Facebooka, to się może przydać któremuś z Twoich znajomych 
>>> Przypnij sobie tą stronkę to zakładek, może się przydać w przyszłości

Wolisz oglądać 📺 niż czytać – nie ma problemu
>>> Obserwuj i oglądaj KajoData na YouTube

Inne ciekawe artykuły:

Wolisz poczytać po angielsku? No problem – tłumaczenie znajdziesz tu.

Ja Ci ją z przyjemnością wyślę. Za darmo. Bez spamu.

Poradnik Początkującego Analityka

Video - jak szukać pracy w IT

Regularne dawki darmowej wiedzy, bez spamu.

Zgadzam się na przetwarzanie moich danych osobowych przez KajoData Kajo Rudziński w celu realizacji usługi newsletter, a tym samym wysyłania mi informacji o produktach blogowych, usługach, lub nowościach, zgodnie z polityką prywatności. Wiem, że zgodę tę mogę w każdej chwili cofnąć.

Please wait...

Dziękujemy za zapis!