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 ;