Selamlar,

Bugün sqlde iki veya daha fazla tabloyu birbirine bağlayarak sorgu çekmemizi sağlayan join komutlarından inner join’i işleyeceğiz.

Bu işlemi yapabilmek için elimizde en az iki tablo olması gerekmekte, ben örneğimde 3 tablo kullanacağım.  Kullanacağım tablolar şunlar olacak ; Tedarikçi,Kategori,Ürün.

Tedarikçi;

 Resim

Kategori;

 Resim

Urun;

 Resim

Yukarıda ki tabloları oluşturup verileride ekledikten sonra inner join ‘e geçebiliriz. Tabii kodlamadan önce mantığından biraz bahsedelim.

Şimdi ürün tablomıza bakalım, eğer ürünümün KategoriID alanında 1 yazıyorsa, aslında biz onun elektronik kategorisine ait olduğunu biliyoruz. Ya da TedarikciID alanında 2 yazıyorsa, yine onun Vatan Computer olduğunu biliyoruz.

ancak bunu biz biliyoruz, bu projeyi web sitenizde ya da formunuzda yayınladığınızda ürünler tablosuna bakan bir kullanıcı bu rakamların ne anlama geldiğini bilemeyecektir. KategoriID yazan alanda 1,2,3 gibi rakamlar yerine, o rakamın temsil ettiği verinin içerisinde yer alan bir değeri getirmek gerekir.

 Resim

Yani, eğer Urun tablomda yer alan KategoriID  alanında ‘1’ değeri varsa bunun yerine Kategori tablosunda yer alan 1 numaralı değerin kategori adı yazsın istiyorum. Aynı şekilde, eğer Urun tablomda yer alan TedarikciID alanında ‘2’ yazıyorsa, bunun tedarikçi tablosunda yer alan 2 numaralı satırın tedarikçi adı yazsın istiyorum. Ya da tedarikçi açıklaması da yazabilir, tamamen size kalmış.

 Resim

İnner join işleminden sonra göreceğimiz sonuç yukarıda ki sonuçlardan 4.südür.

Böylece kullanıcıya anlamlandırabileceği bir veri sunabileceğiz.

Unutmadan, biz burada yeni bir tablo yaratmıyoruz, yanlızca daha önceden yapılmış tabloları birleştirerek bir sonuç(result) elde ediyoruz. Yanlızca bir sorgu.

Lafı daha fazla uzatmadan kodlamaya geçiyorum.

İlk olarak dosdoğru bir select sorgusu çekelim;

 Resim

(Dipnot: Burada ki ‘u’ kısaltma olarak kullanıcak, sorgunun devam eden bölümlerinde ‘Urun’ yazmak yerine yanlızca ‘u’ yazacağız)

Şimdi Urun tablosunu Kategori tablosu ile bağlayalım;

select * from Urun u

inner join Kategori k

on

u.KategoriID = k.KategoriID

burada ki eşitleme işlemi , Urun tablosunda yer alan kategoriID’si ile Kategori tablosunda yer alan KategoriID sini eşitleyerek yapılıyor. Yani, eğer bir eşitleme işlemi yapmasaydım, hangi urunun karşısında hangi kategorinin  yer alacağını belirtmeseydik, kategoriler uzaaaar giderdi 🙂 Tabii ki böyle bir durumda komut çalışmazdı.

 Resim

Resimde de görüldüğü gibi iki tablo birbirine ID’leri vasıtasıyla bağlanmış durumda, siyah çerçeve içerisinde kalan bölümde ise eşleşmiş kategorilerin listelendiğini görebilirsiniz.

Hemen devamına üçüncü tablomuda ekliyorum.

select * from Urun u

inner join Kategori k

on

u.KategoriID = k.KategoriID

inner join Tedarikci t

on

u.TedarikciID = t.TedarikciID

Görüldüğü üzere üç tablo birbirlerine ID’leri ile eşleşerek bağlanmış durumdalar.

 Resim

Select sorgusunda yer alan yıldızı kaldırıp, istediğimiz verileri yazdığımızda sorgumuz tamamlanmış olacak, kategori de yer alan kategori açıklamasını ve tedarikçide yer alan tedarikçi açıklama kısımlarını filtreleyip kaldırmış olacağız, çünkü burası için gereksizler.

Şöyle ki ;

select u.UrunID,k.KategoriAd,t.TedarikciAdi, u.UrunAd,u.UrunAciklama,u.UrunSKT,u.UrunFiyat from Urun u

inner join Kategori k

on

u.KategoriID = k.KategoriID

inner join Tedarikci t

on

u.TedarikciID = t.TedarikciID

Bu komut karşılığında alacağımız result (çıktı,sonuç) aşağıda ki gibi olacaktır.

 Resim

Umarım faydalı olmuştur, görüşmek üzere…

Saygılarımla

Umutcan VURGUN

Yorum bırakın