Anasayfa / Yazılım / SQL / OUTER JOIN Tablo Birleştirme Uygulamaları

OUTER JOIN Tablo Birleştirme Uygulamaları

MS SQL’de tablo birleştirme fonksiyonları hakkında bir çok yazı paylaştım. Bu yazımda da bir kaç uygulama yapmak istiyorum. Uygulamalarımı Adventure Works 2012 örnek veritabanı üzerinde gerçekleştiriyorum.

1) Bir ürün sipariş edilsin ya da sipariş edilmesin tüm ürünleri ilgili sipariş ID’leri ile birlikte listeyelim. Bunun için yapmamız gereken şu, Sales.SalesOrderDetail tablosu ile Production.Product tablosunu ProductID kolonu üzerinden bağlamak.

SELECT SalesOrderID, Urun.ProductID, Urun.Name FROM Production.Product AS Urun
LEFT OUTER JOIN Sales.SalesOrderDetail AS SatisSiparisDetayi
ON Urun.ProductID = SatisSiparisDetayi.ProductID

2013022505

2) Bu seferde üstteki sorgumuza ek olarak herhangi bir siparişi bulunmayan ürünleri listeleyelim. Bunun için sadece bir koşul eklememiz yeterli. Bu koşuluda SalesOrderID kolonunun NULL olup olmaması ile ölçeceğiz. O halde sorgu :

SELECT SalesOrderID, Urun.ProductID, Urun.Name FROM Production.Product AS Urun
LEFT OUTER JOIN Sales.SalesOrderDetail AS SatisSiparisDetayi
ON Urun.ProductID = SatisSiparisDetayi.ProductID WHERE SalesOrderID IS NULL

2013022506

3) Sales.SalesPerson tablosu ile Sales.SalesOrderHeader tablosunu SalesOrderID kolonu üzerinden birleştireceğiz. Burada herhangi bir eşleşme olsun ya da olmasın birleştirme işlemi yapacağız. Listelenecek kolonlar içinde SalesPersonID, SalesYTD ve SalesOrderID yer alsın.

SELECT SalesOrderID, SalesPersonID, SalesYTD FROM Sales.SalesPerson AS SatisPersoneli
LEFT OUTER JOIN Sales.SalesOrderHeader AS SatisSiparisBasligi
ON SatisPersoneli.BusinessEntityID = SatisSiparisBasligi.SalesPersonID

2013022507

4) Üçüncü maddede yer alan sorgumuza birde satış personelinin bilgilerinin listelenmesini ekleyelim. FirstName, MiddleName ve LastName alanları Person.Person tablosundan çekilerek listelensin.

SELECT SalesOrderID, SalesPersonID, SalesYTD, FirstName, MiddleName, LastName
FROM Sales.SalesPerson AS SatisPersoneli
LEFT OUTER JOIN Sales.SalesOrderHeader AS SatisSiparisBasligi
ON SatisPersoneli.BusinessEntityID = SatisSiparisBasligi.SalesPersonID
LEFT OUTER JOIN Person.Person AS Kisi
ON Kisi.BusinessEntityID = SatisPersoneli.BusinessEntityID

2013022508

5) Sales.SalesOrderHeader, Sales.CurrencyRate ve Purchasing.ShipMethod tablolarını birleştirelim. Yalnız Purchasing.ShipMethod tablosundaki tüm veriler listelensin. Listelemek istediğim kolonlar ise CurrencyRateID, AverageRate, SalesOrderID ve ShipBase.

SELECT DovizKuru.CurrencyRateID, DovizKuru.AverageRate, KargoMetodu.ShipBase, SalesOrderID
FROM Sales.SalesOrderHeader AS SatisSiparisBasligi 
LEFT OUTER JOIN Sales.CurrencyRate AS DovizKuru 
ON SatisSiparisBasligi.CurrencyRateID = DovizKuru.CurrencyRateID
LEFT OUTER JOIN Purchasing.ShipMethod AS KargoMetodu
ON SatisSiparisBasligi.ShipMethodID = KargoMetodu.ShipMethodID

2013022509

6) Sales.SalesPerson tablosundaki tüm BusinessEntityID kolonları ile Production.Product tablosundaki tüm ProductID kolonlarını birleştirip tek tabloda yayınlayalım. Burada iki tablonun kartezyenini alırız yani CROSS JOIN yaparız.

SELECT SatisPersoneli.BusinessEntityID, Urun.ProductID FROM Sales.SalesPerson
AS SatisPersoneli CROSS JOIN Production.Product AS Urun

Sales.SalesPerson tablosunda 17 veri satırı var, Production.Product tablosunda 504 veri satırı var sonuç olarak listelenecek veri satır sayısı 8568 adettir.

2013022601

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir