Verification: 6ab19e626810e10c MSSQL İnner Join - Hikmet İSKİFOĞLU

MSSQL İnner Join

MSSQL İnner Join

Mssql İnner Join konusu biraz bol örnek çözmeyi gerektiren bir konudur. İlk etapta kafa karışıklıklarına yol açabilecek bir yapıya sahip olsada mantığını oturttuğumuz sürece kolaylıkla altından gelebileceğimiz bir yapıya sahiptir.

Bu konuya başlamadan önce SubQuery anlatımına bakmanız tavsiye edilir.

Elimizde iki tablo olsun ve bunun üzerinden anlatımlara geçelim.

Categories 1->N Products

Products tablomuzdaki CategoryID , Categories deki CategoryID nin foreign keyidir. Bizde inner join yaparken bu categoryId yi kullanıcaz. İki tabloyuda tamamen birleştiren saf inner join kodumuzu yazalım.

 select * from Categories join Products on Categories.CategoryID=Products.CategoryID

Burada yapmış olduğumuz işlemleri kısaca anlatalım. from categories bizim birincil tablomuz oluyor join den sonra products yazmamız da categories tablomuza products ı dahil et anlamına geliyor. En sondaki on Categories.CategoryID=Products.ProductID ise bizim bu iki tabloyu neye göre eşitleyeceğimizi belirtiyor.

Aslında burada bu categoryId yerine başka bir değişkeni de eşitleyebiliriz fakat böyle bir durumda yanlış bir eşitleme ile karşılaşağımız kaçınılmazdır. Bu yüzden birbiri ile ilişkide olan field leri eşitlemeye dikkat etmekte fayda var.

Şimdide hangi kategorinin kaç ürüne sahip olduğunu bulan kodu yazalım.

 select Categories.CategoryName,count(*)as [Ürün Sayisi] from Categories 
 join Products on Categories.CategoryID=Products.CategoryID 
 group by Categories.CategoryName

Döndürülecek olan tablomuzu yazarken from categories dediğimiz için direk categoryName de diyebilirdik fakat bu iki kullanımıda bilmeniz açısından yolunu belirterek yazdım. Sonrasında ise ikinci kolona ürün sayısını yazdırıyoruz. Kategori isimlerine göre ürün adetlerini yazdıracağımızdan en sonda categori isimlerine göre sıralaması için group by ekliyoruz.

Şimdi de şirketlere ödenecek olan ücretleri gösterelim.

 select Shippers.CompanyName,Sum(Orders.Freight)as [Ödenecek Tutar] from Orders
  join Shippers on Orders.ShipVia=Shippers.ShipperID group  by Shippers.CompanyName

Şimdi ise gerçek bir inner join yapmaya başlayalım. Hangi şirketin hangi ürünleri sipariş verdiğini döndüren bir sql sorgusu yazalım. Bunun için önce bi diagramımıza bakalım hangi yollardan gidicez.

Önerilen Yazı :  MSSQL Select İşlemleri
  select Customers.CompanyName,Products.ProductName from Customers join Orders on Customers.CustomerID=Orders.CustomerID 
  join [Order Details] on Orders.OrderID=[Order Details].OrderID join Products on [Order Details].ProductID=Products.ProductID

Şirketlerin aldığı ürünleri göstereceğimiz için yolumuzu şirketlerden başlatalım. Sürekli aradaki bağlantılardan yola çıkarak tüm tablolarımızı birleştiriyoruz.

Bu kullanımı yaparken bir tablo tanımladığımızda peşine bir kısayol da belirtebilir ve sonrasında sürekli o kısayol üzerinden de gidebiliriz. Örnek olarak bu kodun kısayollu kullanımıda ekleyelim.

select c.CompanyName,p.ProductName from Customers c join Orders o on c.CustomerID=o.CustomerID 
  join [Order Details] od on o.OrderID=od.OrderID join Products p on od.ProductID=p.ProductID

Total Page Visits: 315 - Today Page Visits: 2

Bir cevap yazın

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