Dış birleşimleri kullanma

Tamamlandı

İç birleşimler kadar yaygın olmasa da, çok tablolu sorguda dış birleşimlerin kullanılması, iş verilerinizin alternatif bir görünümünü sağlayabilir. İç birleşimlerde olduğu gibi, tablolar arasında mantıksal bir ilişki ifade edeceksiniz. Ancak, yalnızca eşleşen özniteliklere sahip satırları değil, aynı zamanda tabloların birinde veya her ikisinde bulunan tüm satırları (diğer tabloda bir eşleşme olup olmadığına bakılmaksızın) alırsınız.

Daha önce, iki tablo arasındaki eşleşen satırları bulmak için INNER JOIN kullanmayı öğrendinsiniz. Gördüğünüz gibi sorgu işlemcisi, ON yan tümcesi koşulunda ifade edilen koşullara uymayen satırları filtreleyerek INNER JOIN sorgusunun sonuçlarını oluşturur. Sonuç, yalnızca diğer tabloda eşleşen satıra sahip satırların döndürülür. OUTER JOIN ile, tablolar arasında eşleşen satırların yanı sıra diğer tabloda eşleşmesi olmayan tüm satırları görüntülemeyi seçebilirsiniz. Bir örneğe göz atalım ve işlemi inceleyelim.

İlk olarak, INNER JOIN ile yazılmış aşağıdaki sorguyu inceleyin:

SELECT emp.FirstName, ord.Amount
FROM HR.Employee AS emp
INNER JOIN Sales.SalesOrder AS ord
    ON emp.EmployeeID = ord.EmployeeID;

Bu satırlar İk arasındaki eşleşmeyi gösterir. Employee ve Sales.SalesOrder. Sonuçlarda yalnızca her iki tabloda yer alan EmployeeID değerleri görüntülenir.

A Venn diagram showing the matching members of the Employee and SalesOrder sets

Şimdi LEFT OUTER JOIN olarak yazılan aşağıdaki sorguyu inceleyelim:

SELECT emp.FirstName, ord.Amount
FROM HR.Employee AS emp
LEFT OUTER JOIN Sales.SalesOrder AS ord
    ON emp.EmployeeID = ord.EmployeeID;

Bu örnekte, sorgu işlemcisini soldaki tablodan (İk) tüm satırları korumaya yönlendiren LEFT OUTER JOIN işleci kullanılır. çalışan) ve Sales.SalesOrder içindeki eşleşen satırlar için Tutar değerlerini görüntüler. Ancak, satış siparişi alıp almadıklarına bakılmaksızın tüm çalışanlar iade edilir. Tutar değeri yerine sorgu, eşleşen satış siparişi olmayan çalışanlar için NULL döndürür.

A Venn diagram showing the outer join results of the Employee and SalesOrder sets

OUTER JOIN söz dizimi

Dış birleşimler LEFT, RIGHT veya FULL anahtar sözcükleri kullanılarak OUTER JOIN'den önce ifade edilir. Anahtar sözcüğün amacı, hangi tablonun (JOIN anahtar sözcüğünü hangi tarafında) korunması gerektiğini ve tüm satırlarının görüntülenmesini sağlamaktır; veya eşleşme yok.

Birleştirmeyi tanımlamak için LEFT, RIGHT veya FULL kullanırken, burada gösterildiği gibi OUTER anahtar sözcüğünü atlayabilirsiniz:

SELECT emp.FirstName, ord.Amount
FROM HR.Employee AS emp
LEFT JOIN Sales.SalesOrder AS ord
    ON emp.EmployeeID = ord.EmployeeID;

Ancak INNER anahtar sözcüğünde olduğu gibi, kullanılan birleştirme türü hakkında açık kod yazmak genellikle yararlıdır.

OUTER JOIN kullanarak sorgu yazarken aşağıdaki yönergeleri göz önünde bulundurun:

  • Gördüğünüz gibi, tablo diğer adları yalnızca SELECT listesi için değil, ON yan tümcesi için de tercih edilir.
  • INNER JOIN'te olduğu gibi, OUTER JOIN tek bir eşleşen sütunda veya birden çok eşleşen öznitelikte gerçekleştirilebilir.
  • INNER JOIN'ten farklı olarak, tabloların FROM yan tümcesinde listelenme ve birleştirme sırası OUTER JOIN ile önemlidir, bu nedenle birleştirmeniz için LEFT veya RIGHT seçeneğini belirleyecektir.
  • Çok tablolu birleşimler, BIR OUTER JOIN mevcut olduğunda daha karmaşıktır. Ara sonuçlar daha sonra üçüncü bir tabloya katılırsa, OUTER JOIN sonuçlarında NUL'lerin bulunması sorunlara neden olabilir. NUL'leri olan satırlar, ikinci birleşimin koşuluna göre filtrelenebilir.
  • Yalnızca eşleşme bulunmayan satırları görüntülemek için, OUTER JOIN koşulunun ardından WHERE yan tümcesine NULL testi ekleyin.
  • FULL OUTER JOIN nadiren kullanılır. İki tablo arasındaki tüm eşleşen satırların yanı sıra ikinci tabloda eşleşmesi olmayan ilk tablodaki tüm satırları ve ikinci tablodaki tüm satırları birincide eşleşmeden döndürür.
  • Order BY yan tümcesi olmadan satırların geri döneceği sırayı tahmin etmenin bir yolu yoktur. Eşleşen veya eşleşmeyen satırların önce döndürüleceğini bilmenin hiçbir yolu yoktur.