Dış birleşimler kullanma
İç birleşimler yalnızca olduğunda her iki tablodan eşleşen en az bir satır satır dönmek birleşim koşulu.İç birleşimler eşleşen satırlar ile diğer satır ortadan tablo.Bu satırların herhangi WHERE veya HAVING arama koşullarını karşılaması sürece dış birleşimler birinden az tables ya da views from yan tümce tümce tümcesinde belirtilen ancak, tüm satırları verir.Tüm satırları soldan alınır tablo sağdan tüm satır ve bir left outer JOIN ile başvurulan tablo başvurulan bir sağ dış birleştirme işlemidir.Her iki tablodan tüm satırları tam olarak döndürülen dış birleştirmek.
SQL Serverfrom yan tümce tümce tümcesinde belirtilen dış birleştirmeler için aşağıdaki ISO anahtar sözcükleri kullanır:
left outer JOIN veya left JOIN
RIGHT outer JOIN veya RIGHT JOIN
full outer JOIN veya full JOIN
Kullanarak sol dış birleşimler
Düşünün bir birleştirmek , Product Tablo ve ProductReview Tablo üzerinde kendi ProductID sütunlar.sonuçlar yalnızca incelemeler yazılmış ürünleri göster.
Olup olmadığını gözden biri için yazılmış olursa olsun tüm ürünler dahil etmek için bir ISO kullanın sol dış birleşim.Sorgu aşağıdadır:
USE AdventureWorks2008R2;
GO
SELECT p.Name, pr.ProductReviewID
FROM Production.Product p
LEFT OUTER JOIN Production.ProductReview pr
ON p.ProductID = pr.ProductID
Tüm satırları left outer JOIN içeren Product , tablo sonuçlar, bir eşleşme olmadığını olsun olmasın ProductID sütununda ProductReview tablosu.Dikkat, sonuçlar bir ürün için hiçbir eşleşen ürün İnceleme kimliği olduğu satır null değer içeren ProductReviewID sütun.
Sağ dış birleşimler kullanma
Bir birleştirmek göz önünde SalesTerritory Tablo ve SalesPerson Tablo üzerinde kendi TerritoryID sütunlar.Bir satış temsilcisi için atanan bölge sonuçlar gösterir.SAĞ dış birleştirmek, ISO sağ dış birleştirmek işleç ikinci tüm satırları gösterir tablo sonuçlar ne olursa olsun ilk veri vardır eşleştirme olup olmadığını dahil edileceğini tablo.
Sonuçlarında bunlar bir bölgeye atanmış olan ne olursa olsun, tüm satış kişileri dahil etmek için bir ISO kullanmak sağ dış birleştirme.İşte Transact-SQL sorgu ve sonuçlarını sağ dış birleştirme:
USE AdventureWorks2008R2;
GO
SELECT st.Name AS Territory, sp.BusinessEntityID
FROM Sales.SalesTerritory st
RIGHT OUTER JOIN Sales.SalesPerson sp
ON st.TerritoryID = sp.TerritoryID ;
Sonuç kümesi buradadır.
Territory BusinessEntityID
-------------------------------------------------- -------------
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ı içeren sağ dış birleştirme, ancak satış 2,000,000 $'dan yalnızca satış bölgeleri içerir:
USE AdventureWorks2008R2;
GO
SELECT st.Name AS Territory, sp.BusinessEntityID
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: Burada (Transact-sql).
Kullanarak tam dış 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.
Düşünün bir birleştirmek , Product Tablo ve SalesOrderDetail Tablo üzerinde kendi ProductID sütunlar.sonuçlar yalnızca satış siparişlerine göre sahip ürünleri göster.ISO full outer JOIN işleç, her iki tablodan tüm satırları sonuçlar ne olursa olsun tablolardaki verileri vardır eşleştirme olup olmadığını dahil olduğunu gösterir.
where yan tümce tümce tümce ile tam içerebilir dış birleştirmek yalnızca satırları döndürmek için tablo arasında eşleşen verileri olmayan tümce tümce yerlerde.Bir ürün için eşleştirilir bu satış siparişlerinin yanı sıra hiçbir eşleşen satış siparişleri olan ürünler aşağıdaki sorgu döndürür (tüm satış siparişleri, ancak bu konuda durum, bir ürün için eşleştirilir).
USE AdventureWorks2008R2;
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 ;