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 ;