Podsumowanie: w tym samouczku dowiesz się, jak używać SQL Server FULL OUTER JOIN
do odpytywania danych z dwóch lub więcej tabel.
Wprowadzenie do pełnego sprzężenia zewnętrznego SQL Server
FULL OUTER JOIN
zwraca zestaw wyników zawierający wiersze z lewej i prawej tabeli. Jeśli nie ma pasujących wierszy dla wiersza w lewej tabeli, kolumny prawej tabeli będą miały wartości null. Podobnie, jeśli nie ma pasujących wierszy dla wiersza w prawej tabeli, kolumna lewej tabeli będzie miała wartości null.
Poniżej przedstawiono składnię FULL OUTER JOIN
przy dołączaniu do dwóch tabel T1
i T2
:
Code language: SQL (Structured Query Language) (sql)
Słowo kluczowe OUTER
jest opcjonalne, więc możesz je pominąć, jak pokazano w następującym zapytaniu:
Code language: SQL (Structured Query Language) (sql)
W tej składni :
- Najpierw określ lewą tabelę
T1
w klauzuliFROM
. - Po drugie, określ odpowiednią tabelę
T2
i predykat łączenia.
Poniższy diagram Venna ilustruje FULL OUTER JOIN
dwóch zestawów wyników:
Przykład pełnego sprzężenia zewnętrznego w SQL Server
Ustawmy przykładową tabelę, aby zademonstrować pełne sprzężenie zewnętrzne.
Najpierw utwórz nowe schemat o nazwie pm
, który oznacza zarządzanie projektami.
Code language: SQL (Structured Query Language) (sql)
Następnie utwórz nowe tabele o nazwie projects
i members
w schemacie pm
:
Załóżmy, że tylko każdy członek może uczestniczyć w jednym projekcie, a każdy projekt ma zero lub więcej członków. Jeśli projekt jest w fazie pomysłu, nie ma przypisanego członka.
Następnie wstaw kilka wierszy do projects
i members
tabele:
Następnie wyszukaj dane z tabel projects
i members
:
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Na koniec użyj FULL OUTER JOIN
, aby wyszukać dane z tabel projects
i members
:
Oto wynik:
W tym przykładzie zapytanie zwróciło członków, którzy uczestniczą w projektach, członków, którzy nie uczestniczą w żadnych projektach oraz projekty, które nie mają żadnych członków.
Aby znaleźć członków, którzy nie uczestniczą w dowolny projekt i projekty w Jeśli nie masz żadnych członków, dodajesz klauzulę WHERE
do powyższego zapytania:
Poniższy rysunek przedstawia wynik:
Jak wyraźnie widać w wynikach, Jack Daniel
nie uczestniczy w żadnym projekcie, a Develop Mobile Sales Platform
nie ma żadnych członków.
W tym samouczku nauczyłeś się, jak korzystać z pełnego zewnętrznego serwera SQL dołącz do zapytania o dane z dwóch lub więcej tabel.