SQL - Inner Join - Tablo Birleştirme


Twitter'da Paylaş Favorilerime Ekle

Join Komutları ile Tabloları Birleştirme

İki farklı tablodan, belirtilen alanları eşleştirerek listeleme yapmamızı sağlar.

Örnek olarak aşağıda iki tablo verilmiştir. Matematik tablosunda öğrencilerin isimleri gereksiz yere yazılmamış, numaraları kullanılarak belirtilmişlerdir.

ogrenciBilgileri Tablosu:
numarasi adi soyadi tcNo cinsiyet
112 Ayşe Keser 12345678910 k
134 Hasan Tahsin 11345678910 e
234 Ahmet Yılmaz 11145678910 e
243 Hayriye Çınar 11115678910 k
156 Aylin Keskin 12541254125 k

 

Matematik tablosu:
numarasi sinav1 sinav2 sinav3
95 10 20 45
112 55 44 66
134 33 55 77
234 22 55 88
243 11 55 99

Öğrencilerin matematik notları listelendiğinde, bu tabloda öğrenci adları bulunmadığı için hangi öğrencinin kaç aldığı kolay anlaşılmayacaktır. Bunun için iki tablo birleştirilmeli, matematik tablosundaki her numara için diğer tabloya bakılarak o öğrencinin ad ve soyadı bulunmalıdır. 

İşte gerekli eşleşmeyi sağlayarak tabloları birleştirmek için Inner Join komutları kullanılır.

Select ogrenciBilgileri.adi, ogrenciBilgileri.soyadi, Matematik.sinav1

From Matematik Inner Join ogrenciBilgileri

on ( Matematik.numarasi=ogrenciBilgileri.numarasi )

Yukarıdaki sorguyu inceleyiniz. İki tablodaki verilerin, numarasi alanlarına göre eşleştirme yapılarak listelenmesi sağlanmıştır.

Inner Join komutu ile birleştirilecek tablolar belirtilmiş, on komutu ile de farklı tablolardaki kayıtların nasıl eşleştirileceği belirtilmiştir.

Birden fazla tablo bulunduğu için alan isimlerinden önce tablo adları da belirtilmelidir.

Join komutu 4 farklı şekilde kullanılabilir.

1. Inner Join

Eşleşmenin yapılmasını istediğimiz alanlarda boş olan kayıtları eleyerek sonuca dahil etmez.

Aşağıdaki örneğe göre düşünürsek, tablolardan birinde yer almayan numaralar listelenmeyecektir. Yani 1. tablodaki 156 numaralı kayıt, diğer tablo ile eşleşmeyeceği için sonuca dahil edilmeyecektir. Aynı şekilde 2. tablodaki 95 numaralı öğrenci de listelenmeyecektir.

Select ogrenciBilgileri.adi, ogrenciBilgileri.soyadi, Matematik.sinav1

From Matematik Inner Join ogrenciBilgileri

on ( Matematik.numarasi=ogrenciBilgileri.numarasi )

2. Left Join (Left Outer Join)

Birinci tablonun yani Left Join komutunun soluna yazılan tabloda var olan tüm numaralar, diğer tabloda olmasalar bile listelemeye dahil edilir.

Bu örnekte ilk tabloda bulunup diğer tabloda bulunmayan 156 numaralı öğrenci de listelenecektir.

Select ogrenciBilgileri.adi, ogrenciBilgileri.soyadi, Matematik.sinav1

From ogrenciBilgileri Left Join matematik

on ( Matematik.numarasi=ogrenciBilgileri.numarasi )

3. Right Join (Right Outer Join)

Left join komutunun tersi gibi düşünülebilir. Bu sefer sağ tarafa yazılan tablodaki tüm kayıtlar listelemeye dahil edilecektir.

Aşağıdaki sorgu çalıştığında 2. tablodaki 95 numaralı öğrenci, ilk tabloda olmasa da listelemeye dahil edilecektir. Tabi adı ve soyadı boş kalacaktır çünkü ilk tabloda onunla eşleşen bir bilgi olmayacaktır.

Select ogrenciBilgileri.adi, ogrenciBilgileri.soyadi, Matematik.sinav1

From ogrenciBilgileri Right Join matematik

on ( Matematik.numarasi=ogrenciBilgileri.numarasi )

 

4. Full Join (Full Outer Join)

Her iki tablodan da diğerinde olmayan kayıtlar listelemeye dahil edilir.

Select ogrenciBilgileri.adi, ogrenciBilgileri.soyadi, Matematik.sinav1

From Matematik Full Join ogrenciBilgileri

on ( Matematik.numarasi=ogrenciBilgileri.numarasi )

 

sql inner join kullanımı, sql tabloları birleştirme, sql iki tablodan veri alma, sql farklı tabloları eşleştirerek veri listeleme, left join, right join , sql tablo birleştirme