Za pomocą sprzężenia zewnętrzne
łączyć wewnętrzne zwracają wiersze tylko wtedy, gdy co najmniej jeden wiersz w obu tabelach, odpowiadający warunek łączyć.Sprzężenia wewnętrzne usunąć wiersze, które nie są zgodne z wierszem z innej tabela.Sprzężenia zewnętrzne, jednak zwracać wszystkie wiersze z co najmniej jednej z tabel lub widoków, wymienionych w klauzula FROM, tak długo, jak te wiersze spełnia żadnego miejsca lub HAVING warunków wyszukiwania.Wszystkie wiersze są pobierane z lewej tabela, do którego odwołuje się z lewe łączyć zewnętrzne, a wszystkie wiersze z prawej tabela, do którego odwołuje się po prawej zewnętrzne łączyć.Wszystkie wiersze z obu tabel są zwracane w pełne łączyć zewnętrzne.
SQL Server używa następujących słów kluczowych ISO dla sprzężeń zewnętrznych, określone w klauzula FROM:
lewe łączyć zewnętrzne lub LEFT łączyć
prawe łączyć zewnętrzne lub RIGHT łączyć
pełne łączyć zewnętrzne lub FULL łączyć
Korzystanie z lewej zewnętrzne sprzężenia
Należy wziąć pod uwagę łączyć z Product Tabela i ProductReview Tabela na ich ProductID kolumny. Wyniki wskazują produktów, dla których zostały zapisane recenzji.
Aby dołączyć wszystkie produkty, niezależnie od tego, czy zapisano przeglądu dla jednego, należy użyć ISO lewe łączyć zewnętrzne.Kwerendy jest następująca:
USE AdventureWorks;
GO
SELECT p.Name, pr.ProductReviewID
FROM Production.Product p
LEFT OUTER JOIN Production.ProductReview pr
ON p.ProductID = pr.ProductID
LEFT łączyć zewnętrzne obejmuje wszystkie wiersze w Product Tabela w wyniki, niezależnie od tego, czy są zgodne na ProductID kolumna w ProductReview Tabela. Zwróć uwagę, że w wyniki w przypadku brak pasującego IDENTYFIKATORA przeglądu produktu dla produktu, wiersz zawiera wartość null w ProductReviewID Kolumna.
Za pomocą sprzężenia zewnętrzne prawy
Należy wziąć pod uwagę łączyć SalesTerritory Tabela i SalesPerson Tabela na ich TerritoryID kolumny. Wyniki wskazują terytorium, która została przypisana do sprzedaży osoby.Wskazuje ISO operator prawe łączyć zewnętrzne, RIGHT łączyć zewnętrzne są wszystkie wiersze z drugiej tabela, mają zostać uwzględnione w wyniki, niezależnie od tego czy są pasujące dane z pierwszej tabela.
Aby uwzględnić wszystkie osoby sprzedaży w wyniki, niezależnie od tego czy są one przypisywane obszaru, należy użyć łączyć zewnętrznego prawo ISO.Oto Transact-SQL kwerendy i wyniki prawe łączyć zewnętrzne:
USE AdventureWorks;
GO
SELECT st.Name AS Territory, sp.SalesPersonID
FROM Sales.SalesTerritory st
RIGHT OUTER JOIN Sales.SalesPerson sp
ON st.TerritoryID = sp.TerritoryID ;
Here is the result set.
Territory SalesPersonID
-------------------------------------------------- -------------
NULL 268
Northeast 275
Southwest 276
Central 277
Canada 278
Southeast 279
Northwest 280
Southwest 281
Canada 282
Northwest 283
NULL 284
United Kingdom 285
France 286
Northwest 287
NULL 288
Germany 289
Australia 290
(17 row(s) affected)
łączyć zewnętrzne, można dodatkowo ograniczyć przy użyciu predykatu.W tym przykładzie zawiera te same prawe łączyć zewnętrzne, ale zawiera tylko sprzedaży obszarów sprzedaży mniejszą niż $ 2,000,000:
USE AdventureWorks;
GO
SELECT st.Name AS Territory, sp.SalesPersonID
FROM Sales.SalesTerritory st
RIGHT OUTER JOIN Sales.SalesPerson sp
ON st.TerritoryID = sp.TerritoryID
WHERE st.SalesYTD < $2000000;
Aby uzyskać więcej informacji na temat predykatów zobacz WHERE (języka Transact-SQL).
Za pomocą pełne zewnętrzne sprzężenia
To retain the nonmatching information by including nonmatching rows in the results of a join, use a full outer join.SQL Server provides the full outer join operator, FULL OUTER JOIN, which includes all rows from both tables, regardless of whether or not the other table has a matching value.
Należy wziąć pod uwagę łączyć z Product Tabela i SalesOrderDetail Tabela na ich ProductID kolumny. Wyniki wskazują, produkty, których zamówienia sprzedaży na nich.Operator ISO pełne łączyć zewnętrzne wskazuje, że wszystkie wiersze z obu tabel są mają zostać uwzględnione w wynikach, niezależnie od tego, czy jest to dopasowanie danych w tabelach.
Można dołączyć klauzulę z pełne łączyć zewnętrzne do zwrócenia jedynie tych wierszy, jeżeli nie ma zgodnych danych w tabelach.Następująca kwerenda zwraca tylko tych produktów, które mają nie pasujące zamówień sprzedaży, jak również tych zamówień sprzedaży, które nie są dopasowywane do produktu (mimo, że wszystkie zamówienia sprzedaży, w tym wypadku są dopasowywane do produktu).
USE AdventureWorks;
GO
-- The OUTER keyword following the FULL keyword is optional.
SELECT p.Name, sod.SalesOrderID
FROM Production.Product p
FULL OUTER JOIN Sales.SalesOrderDetail sod
ON p.ProductID = sod.ProductID
WHERE p.ProductID IS NULL
OR sod.ProductID IS NULL
ORDER BY p.Name ;