Anasayfa

Veritabanı

Inner Join ile veritabanı tablolarını bağlama
Facebookta Paylaş

Inner Join ile veritabanı tablolarını bağlama

Mssql veritabanında inner join ile farklı tabloları birbirine bağlayıp verileri çekiyor olacağız. Bu konu için yazarlar ve yazarların kitaplarının tutulduğu bir örnek veritabanı kullanacağım. Öncelikle tabloları ve içeriklerini paylaşayım.

Yazarlar Tablosu ve İçeriği

inner join ile veritabanı tablolarını bağlama - yazarlar

Kitaplar Tablosu ve İçeriği

inner join ile veritabanı tablolarını bağlama - kitaplar



Bu iki tabloyu oluşturup ve içeriklerini de girdikten sonra gelelim bu tablonun amacı ve inner joinin kullaımına.
Bu tablolar ile yazarlar ile kitaplarını ayrı tablolarda tutuyor olacağız. Yazar yeni bir kitap yazdığında kitaplar tablosuna kitabı ve yazar idsini girmemiz yeterli olacak. Tablolar farklı iken bir kitabı hangi yazarın yazdığını öğrenmek için ise inner join ile tablo bağlamayı kullanıyor olacağız.
 

select * from tbl_Kitaplar k 
inner join tbl_Yazarlar y on k.Y_Id = y.Y_Id

yukarıdaki gibi inner join sorgumuzu yazdığımızda aşağıdaki gibi tabloları birleştirilmiş bir şekilde çıktı almış oluruz.

inner join ile tabloları bağlama - inner join

Dilersek inner join sorgumuzu where sorguları ile özelleştirebiliriz. 
 

select * from tbl_Kitaplar k 
inner join tbl_Yazarlar y on k.Y_Id = y.Y_Id
where k.K_KitapYayinTarihi > '1.2.2013'

Sorgumuzu yukarıdaki gibi yazıp çalıştırdığımızda bize sadece 2 Ocak 2013 'ten sonra yayınlanan kitapları ve yazarlarını gösterecektir.

Ayrıca inner join sorgularımızda sadece bize lazım olan alanlarıda gösterebiliriz.
 

select k.K_KitapAdi,y.Y_YazarAdi,y.Y_YazarSoyadi from tbl_Kitaplar k
inner join tbl_Yazarlar y on k.Y_Id = y.Y_Id
where k.K_KitapYayinTarihi > '1.2.2013'

Yukarıdaki gibi yazdığımızda ise 2 Ocak 2013 'ten sonra yayınlanmış Kitapları, Kitap Adı, Yazar Adı ve Yazar Soyadını getirerek gösterecektir.

Bir diğer önemli bir konu ise multi inner join, yani çoklu inner joindir.

Tablo olarak hazırlamadım fakat, 2 den fazla tabloyu inner join ile bağlamamız gerektiğinde ne yapmamız gerekir ?
Bu sorunun cevabı aslında çok zor değil, benzer mantıkla diğer tablolarımızı da oluşturduktan sonra gerekli Id alanlarını mevcut tabloya eklediğimizde klasik bir inner join kod bloğu daha eklemiş olucaz. 
Bu örneğimize bir de kitabın yayınevini ekleyelim. tbl_Yayinevi diye bir tablo oluşturup, YE_Id(int,PK,auto increment) ve YE_Adi(nvarchar(150) şeklinde alanlarımızı ekleyelim.
tbl_Kitaplar tablomuza yayınevlerini bağlayabilmek için bu tablomuzuda YE_Id(int) alanımızı ekleyelim ve yayinevlerini tablomuza içerik girelim.

Şimdi bu üç tabloyu birbirine bağlayan inner join sorgumuz şu şekilde olacaktır.

select * from tbl_Kitaplar k 
inner join tbl_Yazarlar y on k.Y_Id = y.Y_Id
inner join tbl_Yayinevi ye on k.YE_Id = ye.YE_Id

Yukarıdaki sorgu ile 3 tablodaki tüm alanlara ulaşabilirsiniz. Bu sorgumuzda da where koşulu ve belirlediğiniz alanları çekme işlemini aynı şekilde kullanabilirsiniz.

10 Ekim 2013 18:56 Kategori :Veritabanı5340
Sitene Ekle :
Yukarıdaki kodu sitenize ekleyerek bu konuyu sitenizde yayınlayabilirsiniz.