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;
Kategori;
Urun;
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.
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ış.
İ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;
(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ı.
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.
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.
Umarım faydalı olmuştur, görüşmek üzere…
Saygılarımla
Umutcan VURGUN