[T-Sql] Join İfadesi

Merhaba arkadaşlar,

Bu yazıda join ifadelerini anlatacağım.Join iki ya da daha fazla tabloyu birleştirerek denormalize edilmiş şekilde gösterme işlemini gerçekleştirir. Join ifadelerini en güzel şu resim anlatmaktadır.

Sql Joins

Aşağıdaki sorgu Kategoriler ile Ürünler tablosundaki verilerin kesişimlerinin çıktısını verir.

select * 
   from Categories as c
      inner join Products as p 
         on p.CategoryID = c.CategoryID

Satışlarla ilgili bir rapor çıkrınız. ürünün adı,şu anki fiyatı satıştaki fiyatı,şu anki stoğu kaç adet satıldığı

select 
       p.ProductName,
       p.UnitPrice,
       p.UnitsInStock,
       od.Quantity,
       od.UnitPrice 
    from [Order Details] as od
    inner join Products as p 
          on od.ProductID = p.ProductID

Ürünlerin tedarikçi firma adı,iletisim adı,adres,telefon ve fax bilgileri ile listeleyiniz.

select 
       p.ProductName,
       s.CompanyName,
       s.ContactName,
       s.Address,
       s.Phone,
       s.Fax 
   from Products as p 
       inner join Suppliers as s
             on p.SupplierID = s.SupplierID

Hangi kategoride hangi üründen kaç adet satılmıştır?

select 
       p.ProductName,
       c.CategoryName,
       SUM(od.Quantity) 
   from Categories as c 
       inner join Products as p 
          on p.CategoryID=c.CategoryID
       inner join [Order Details] as od 
          on od.ProductID = p.ProductID 
   group by p.ProductName,c.CategoryName 
   order by SUM(od.Quantity) desc

Müşterilerin hangi kategoride kaç dolarlık alışveriş yaptığını raporlayınız.

select 
       ca.CategoryName,
       cu.CompanyName,
       SUM(od.Quantity*od.UnitPrice) 
   from Categories as ca
       inner join Products as p 
          on ca.CategoryID = p.CategoryID
       inner join [Order Details] as od 
          on od.ProductID=p.ProductID
       inner join Orders as o 
          on o.OrderID = od.OrderID
       inner join Customers as cu 
          on cu.CustomerID = o.CustomerID 
   group by ca.CategoryName,cu.CompanyName

Outer join -> Sorgu tablolarından birindeki tüm verilerin gelmesi ve diğerindeki eşleşen verilerin gelmesini sağlamak için kullanılır.inner join sadece eşleşen kayıtları getirir,outer join bu eksikliği gidermek içindir.
Right->sonra yazılan tablonun yani bağlanan tablonun tüm kayıtlarının eşleşmese bile gelmesini sağlar
Left-> önce yazılan tablonun tüm kayıtlarının eşleşmese bile gelmesini sağlar
Full-> önceki ve sonraki iki tablonun da tüm kayıtlarının gelmesini sağlar

Outer Join’lerde outer kelimesi yazılmadan da kullanılabilir.Eğer sadece Join yazılırsa bu inner join olarak kabul edilir.

select * 
   from Categories as c
      left outer join Products as p 
         on p.CategoryID=c.CategoryID
   order by c.CategoryName

select * 
   from Categories as c
      right outer join Products as p 
          on c.CategoryID = p.CategoryID

select * 
   from Categories as c
      full outer join Products as p 
         on p.CategoryID = c.CategoryID

Müşterilerin alışveriş yaptığı tarihleri listeleyin hiç alışveriş yapmamışsa dahi müşteri gözüksün.

select 
       c.CompanyName,
       o.OrderDate 
   from Customers as c
      left outer join Orders as o 
         on c.CustomerID = o.CustomerID 
   order by o.OrderDate

İşte bu kadar =) Join ifadeleri ilk kullanımlarda mantığınıza oturmayabilir. O yüzden resimdeki kümeleri incelemenizde fayda vardır.

Bir sonraki yazımda görüşmek üzere kendinize iyi bakınız.

Bir cevap yazın

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