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
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
- 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.