Dış birleşimleri kullanın

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şimlerle 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. Diğer tabloda eşleşen satırlara sahip olan satırlar 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 İnsan Kaynakları.Employee ve Sales.SalesOrder arasındaki eşleşmeyi gösterirler. Sonuçlarda yalnızca her iki tabloda yer alan EmployeeID değerleri görüntülenir.

Employee ve SalesOrder kümelerinin eşleşen üyelerini gösteren bir Venn diyagramı

Şimdi "LEFT OUTER JOIN" formatında yazılmış olan 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.Çalışan) tüm satırları korumaya yönlendiren SOL DIŞ BİRLEŞİM işleci kullanılır 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.

Employee ve SalesOrder kümelerinin dış birleştirme sonuçlarını gösteren bir Venn diyagramı

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ı, JOIN anahtar sözcüğünün hangi tarafında yer aldığını belirttiği tablonun korunması ve tüm satırlarının, eşleşmeli veya eşleşmesiz, görüntülenmesini sağlamaktır.

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 takma adları yalnızca SELECT listesi için değil, ON ifadeleri 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'den farklı olarak, tabloların FROM ifadesinde listelenme ve birleştirme sırası OUTER JOIN ile önemlidir, çünkü birleştirmenizde LEFT veya RIGHT seçeneğini belirleyecektir.
  • Çok tablolu birleşimler, 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 eşleşen tüm satırların yanı sıra, ikinci tabloda eşleşmesi olmayan birinci tablodaki tüm satırları ve birinci tabloda eşleşmesi olmayan ikinci tablodaki tüm satırları 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.