SQL'de OUTER LEFT/RIGHT/CROSS JOIN Kullanımları

OUTER JOIN-LEFT JOIN Kullanımı
  • INNER JOIN'den farklıdır. 
  • Soldaki tablo baz alınarak sorgu çalıştırılmasıdır. 
  • Soldaki tablodan tüm kayıtlar çekilir ve sağdaki tabloda eşleşen kayıtlar aynen yazılır. 
  • Eşleşmeyen kayıtlar için NULL değer verilir.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 
 
LEFT JOIN Kullanımı : SELECT <sütun_ad(lar)ı> FROM <ilk_tablo> LEFT JOIN <ikinci_tablo> ON <ilk_tablo>.<anahtar_alan> = <ikinci_tablo>.<anahtar_alan>  

Örnek Sorgu : Sorgumuz SELECT kısmında iki sütun tekbir sütun adı altında birleştirilmiştir. Çalıştırıldığında çalışanın tam adı ve müşterilerden aldığı siparişler ve tarihleri listelenecektir.

SELECT Employees.FirstName+' '+Employees.LastName AS Name,OrderID,OrderDate
FROM Employees LEFT JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID
 
 
OUTER JOIN-RIGHT JOIN Kullanımı 
  • LEFT OUTER JOIN işleminin tersini yapar.
  • Sağdaki tablonun baz alınarak sorgu çalıştırılmasıdır. 
  • Sağdaki tablodan tüm kayıtlar çekilir ve soldaki tabloda eşleşen kayıtlar aynen yazılır.
  • Eşleşmeyen kayıtlar için NULL değer verilir.
RIGHT JOIN Kullanımı : SELECT <sütun ad(lar)ı> FROM <ilk_tablo> RIGHT JOIN <ikinci_tablo> ON <birinci_tablo>.<anahtar alan> = <ikinci_tablo>.<anahtar_alan>

Örnek Sorgu : Sorgumuzda tüm müşteriler ve verdikleri siparişlerin tarihleri listelenecektir.

SELECT companyname, customers.CustomerID, orderdate
FROM customers RIGHT OUTER JOIN orders ON customers.CustomerID = orders.CustomerID
 
 
 OUTER JOIN-CROSS JOIN Kullanımı
  • İlişkili tablolar arasındaki tüm eşleşmeleri listeler.
  • Ortak bir alan belirtilmesine gerek yoktur.
  • CROSS JOIN kullanılırken ON ifadesi kullanılmaz.

Örnek Sorgu : Üreticilerin çalışabilecekleri tüm olası gemi şirketleri listelenir.

SELECT suppliers.companyname, shippers.companyname
FROM suppliers CROSS JOIN shippers