SQLShack (Polski)

W tym artykule nauczymy się SQL koncepcję wielokrotnych połączeń i wzmocnij naszą wiedzę całkiem prostymi przykładami, które są wyjaśnione za pomocą ilustracji. W relacyjnych bazach danych dane są przechowywane w tabelach. Bez wątpienia w większości przypadków potrzebujemy zestawu wyników, który jest tworzony z połączenia danych z kilku tabel. Łączenia pozwalają nam łączyć dane z dwóch lub więcej tabel, dzięki czemu możemy łączyć dane z tabel, dzięki czemu możemy łatwo pobierać dane z wielu tabel. Możesz zadać sobie pytanie, ile różnych typów sprzężeń istnieje w SQL Server. Odpowiedź brzmi: istnieją cztery główne typy sprzężeń, które istnieją w SQL Server. Przede wszystkim opiszemy je pokrótce za pomocą ilustracji na diagramie Venna:

  • Sprzężenie wewnętrzne zwraca wiersze pasujące do obu tabel.

  • Lewe sprzężenie zwraca wszystkie wiersze z lewej tabeli

  • Prawe sprzężenie zwraca wszystkie wiersze z prawej tabeli

  • Pełne sprzężenie zwraca całe wiersze z obu tabel

Jeśli brakuje ci wiedzy o koncepcji sprzężeń SQL w SQL Server, możesz zapoznać się z omówieniem typów sprzężeń SQL i samouczkiem.

Po tym krótkim objaśnieniu o typach sprzężeń SQL przejdziemy przez wiele sprzężeń.

Co to są sprzężenia wielokrotne SQL?

Wiele sprzężeń można opisać w następujący sposób; sprzężenie wielokrotne to zapytanie zawierające te same lub różne typy sprzężeń, które są używane więcej niż raz. W ten sposób uzyskujemy możliwość łączenia wielu tabel danych w celu przezwyciężenia problemów z relacyjnymi bazami danych.

Przykładowy scenariusz

Firma Green-Tree uruchomiła nową kampanię na Nowy Rok i złożyła różne oferty swoim klientom online. W wyniku kampanii udało im się zamienić niektóre oferty na sprzedaż. W poniższych przykładach ujawnimy szczegóły dotyczące noworocznych danych kampanii firmy Green-Tree.

Firma przechowuje te dane kampanii w poniższych tabelach. Teraz utworzymy te tabele za pomocą następującego zapytania i wypełnimy je fikcyjnymi danymi:

Jak działa wiele sprzężeń SQL?

Problem biznesowy: Którzy klienci byli zainteresowani tym Nowym Rokiem kampania?

Aby odpowiedzieć na to pytanie, musimy znaleźć pasujące wiersze dla wszystkich tabel, ponieważ niektórzy klienci nie otrzymali oferty e-mail, a niektórych ofert nie można zamienić na sprzedaż. Poniższy diagram Venna pomoże nam znaleźć pasujące wiersze, których potrzebujemy. Krótko mówiąc, wynikiem tego zapytania powinny być przecinające się wiersze wszystkich tabel w zapytaniu. Szary obszar określa te wiersze na diagramie Venna:

Podejście SQL wielokrotnych sprzężeń pomoże nam dołączyć do klientów online , zamówienia i tabele sprzedaży. Jak pokazano na diagramie Venna, musimy dopasować wiersze wszystkich tabel. Z tego powodu połączymy wszystkie tabele z klauzulą sprzężenia wewnętrznego. Następujące zapytanie zwróci żądany od nas zestaw wyników i odpowie na pytanie:

1
2
3
4
5
6
7
8

SELECT customerName, customercity, customermail, salestotal
OD onlinecustomers AS oc
INNER JOIN
zamówienia jako o
ON oc.customerid = o.customerid
INNER JOIN
Sales AS s
ON o.orderId = s.orderId

Najpierw przeanalizujemy zapytanie. Klauzula sprzężenia wewnętrznego, która znajduje się między klientami online a tabelami zamówień, wyprowadza dopasowane wiersze między tymi dwiema tabelami. Druga klauzula sprzężenia wewnętrznego, która łączy tabelę sprzedaży, wyprowadza dopasowane wiersze z poprzedniego zestawu wyników. Poniższa ilustracja kolorowych tabel pomoże nam zrozumieć dopasowanie danych w połączonych tabelach w zapytaniu. Żółte wiersze określają dopasowane dane między klientami internetowymi a zamówieniami. Z drugiej strony w tabelach sprzedaży istnieją tylko niebieskie wiersze, więc wynik zapytania będzie oznaczony kolorem niebieskim:

Wynik zapytania będzie wyglądał następująco:

Użycie różnych typów sprzężeń w łączeniach wielokrotnych SQL

Problem biznesowy: których ofert nie można przekształcić w sprzedaż?

Możemy użyć różnych typów sprzężeń w jednym zapytaniu, aby rozwiązać różne problemy z relacyjnymi bazami danych.W tym przykładzie potrzebujemy wszystkich wierszy tabeli zamówień, które są dopasowane do tabel klientów online. Z drugiej strony te wiersze nie istnieją w tabeli sprzedaży. Poniższy diagram Venna pomoże nam znaleźć pasujące wiersze, których potrzebujemy. Szary obszar wskazuje wiersze, które będą wynikiem zapytania:

W pierwszym kroku powinniśmy połączyć tabele klientów onlin i zamówień za pośrednictwem klauzuli sprzężenia wewnętrznego, ponieważ sprzężenie wewnętrzne zwraca wszystkie dopasowane wiersze między tabelami klientów onlin i zamówień. W drugim kroku połączymy tabelę zamówień z tabelą sprzedaży za pomocą lewego łączenia, a następnie przefiltrujemy wartości null, ponieważ musimy wyeliminować wiersze, które są przechowywane w tabeli sprzedaży:

1
2
3
4
5
6
7
8
9

SELECT customerName, customercity, customermail, ordertotal, salestotal
FROM onlinecustomers AS c
INNER JOIN
zamówienia AS o
ON c.customerid = o.customerid
LEFT JOIN
sales AS s
ON o.orderId = s.orderId
WHERE s.salesId IS NULL

Wynik zapytania będzie wygląda tak:

Quiz

Q uestion: Wygeneruj prawidłowe zapytanie zgodnie z poniższym diagramem Venna.

Odpowiedź: Jak się dowiedzieliśmy, pełne sprzężenie pozwala nam, aby zwrócić wszystkie wiersze z połączonych tabel. Odpowiedzi na zapytanie będzie wyglądać następująco:

1
2
3
4
5
6
7
8

SELECT customerName, customercity, customermail, ordertotal, salestotal
OD klientów onlin AS c
FULL JOIN
zamówienia JAKO
ON c.customerid = o.customerid
PEŁNE DOŁĄCZ
sprzedaż AS s
ON o.orderId = s.orderId

Podsumowanie

W tym artykule skupiliśmy się na podejściu SQL wielokrotnych sprzężeń i nauczyliśmy się go ze szczegółowymi przykładami. Łączenia wielokrotne pozwalają nam łączyć więcej niż dwie tabele, dzięki czemu możemy rozwiązać różne problemy w systemie relacyjnych baz danych. Ponadto widzieliśmy, jak możemy użyć różnych typów złączeń w jednym zapytaniu.

  • Autor
  • Najnowsze posty
Esat Erkec jest Profesjonalista SQL Server, który swoją karierę rozpoczął ponad 8 lat temu jako programista. Jest certyfikowanym ekspertem ds. Rozwiązań SQL Server Microsoft.
Większość jego kariery zawodowej skupiała się na administrowaniu i programowaniu baz danych SQL Server. Jego obecne zainteresowania to administracja bazami danych oraz Business Intelligence. Możesz go znaleźć na LinkedIn.
Wyświetl wszystkie posty Esata Erkeca

Najnowsze posty Esata Erkeca (zobacz wszystkie)
  • Pierwsze kroki z programowaniem w SQL – 3 lutego 2021
  • Jak czytać wykonanie plan ze wszystkimi szczegółami – 28 stycznia 2021 r.
  • Omówienie instrukcji SQL SELECT TOP i przykłady – 25 stycznia 2021 r.

Leave a Reply

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *