Share via


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 ;