Aracılığıyla paylaş


Dış birleşimler kullanma

Iç birleşimler, yalnızca olduğunda her iki tablodan en az bir satır birleştirmek koşulu karşılayan satırları döndürür.Iç birleşimler diğer bir satırdan ile eşleşmeyen satırları ortadan tablo.Satırları herhangi WHERE veya arama koşulu HAVING uygun olarak dış birleşimler, en az bir tablo veya Görünüm FROM yan tümcesinde belirtildiği ancak tüm satırları döndürür.Ile başvurulan sol tablodaki tüm satırların alınan bir sol dış birleştirmek ve bir sağ dış birleştirmekk başvurulan sağ tablodaki tüm satırları.Her iki tablodan tüm satırları, bir tam dış birleştirmek döndürülür.

SQL Server bir FROM yan tümcesinde belirtilen dış birleştirmeler için ISO aşağıdaki anahtar sözcükler kullanır:

  • LEFT dış birleştirmek veya bir LEFT birleştirmek

  • RIGHT dış birleştirmek veya RIGHT birleştirmek

  • tam dış birleştirmek veya FULL birleştirmek

Dış sol kullanarak birleşimler

birleştirmek, göz önünde bulundurun Product Tablo ve ProductReview temel tablo, ProductID sütunlar. sonuçlar yalnızca incelemeler yazılmıştır ürünleri gösterir.

Olup olmadığını gözden geçirme için bir yazılmış olursa olsun, tüm ürünleri eklemek için bir ISO kullanmak sol dış birleştirme.Sorgu şudur:

USE AdventureWorks;
GO
SELECT p.Name, pr.ProductReviewID
FROM Production.Product p
LEFT OUTER JOIN Production.ProductReview pr
ON p.ProductID = pr.ProductID

LEFT dış birleşim, tüm satırları içeren Product ' de tablo sonuçlar, bir eşleşme varsa olsun olmasın ProductID sütunda ProductReview TABLO. sonuçlar dikkat hiçbir eşleşen ürün gözden geçirme KIMLIĞININ bir ürün olduğu, satır null değer içeren ProductReviewID sütun.

Sağ dış birleşimler kullanma

Bir birleştirmek göz önünde bulundurun. SalesTerritory Tablo ve SalesPerson temel tablo, TerritoryID sütunlar. Sonuçlar, bir satış elemanı için atanmış olan tüm bölge gösterir.ISO sağ dış birleştirme işleç sağ dış birleştirme, ikinci tablodaki tüm satırların sonuçlarda bakılmaksızın varsa, ilk tablodaki veri eşleştirme mi dahil edileceğini gösterir.

Sonuçlarında olup, bölge atanan bakılmaksızın, tüm satış kişileri dahil etmek için bir ISO kullanmak sağ dış birleştirme.Burada Transact-SQL Query ve sonuçlarnı sağ dış birleştirme:

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)

Bir dış birleştirmek bir yüklemi kullanarak daha fazla kısıtlanabilir.Bu örnek, aynı sağ dış birleştirmek içerir, ancak yalnızca satış bölgeleri Satış $ 2,000,000'dan içerir:

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;

Yüklemler hakkında daha fazla bilgi için bkz: WHERE (Transact-SQL).

Tam dış kullanarak birleşimler

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.

birleştirmek, göz önünde bulundurun Product Tablo ve SalesOrderDetail temel tablo, ProductID sütunlar. sonuçlar, yalnızca satış siparişlerine göre olan ürün gösterir.ISO tam dış birleştirmek işleç, her iki tablodan tüm satırları tablolarındaki verilere eşleşen var olmadığını dikkate almadan, sonuçlar eklenmek üzere olduğunu gösterir.

Bir WHERE yan tümce yalnızca satırları dönmek için bir tam dış birleştirmek ile eklediğiniz tablolar arasında eşleşen verileri olmayan olduğu.Aşağıdaki sorgu, yalnızca sahibin meşru olarak (tüm satış siparişlerini, bu durumda, bir ürün eşleştirilmiştir karşın) bir ürün eşleşti bu satış siparişlerinin yanı sıra, hiçbir eşleşen satış siparişlerini sahip ürünler döndürür.

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 ;