Inner Join - Tablo Birleştirme

 

 

 

Join(Birleştirici), iki ya da daha fazla tabloyu aynı anda sorgulayarak listeleme yapar.Tabloları birleştirerek listeleme oluşturmak istenirse her iki tabloda da aynı olan alanlardan yola çıkılır. Böylece bu alanları kullanarak istenilen listeleme oluşturulabilir.

 

 

Örnek olarak aşağıda iki tablo verilmiştir.Bilgi tablosu ile Notlar tablosu.Notlar tablosunda öğrencilerin isimleri gereksiz yere yazılmamış, tc alanı kullanılarak belirtilmişlerdir.

 

 

 

 

 

Öğrencilerin notları listelendiğinde, bu tabloda öğrenci adları bulunmadığı için hangi öğrencinin kaç aldığı anlaşılmayacaktır. Bunun için iki tablo birleştirilmeli, notlar 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.

 

Inner Join ile sorgu yazmanın genel kuralı aşağıdaki gibidir.

 

SELECT TabloA.AlanA, TabloB.AlanB FROM TabloA INNER JOIN TabloB ON TabloA.Alan1 = TabloB.Alan1

 

 

yani

 

SELECT gösterilecek alanlar FROM TabloA INNER JOIN TabloB ON TabloA-aynı alan=TabloB-aynı alan

 

 

Yukarıdaki tablolarda birtleştirme işlemini gerçekleştirelim:

 

 

select bilgi.adi,bilgi.soyadi,notlar.ders from bilgi
inner join notlar on bilgi.tc=notlar.tc

 

 

Yukarıdaki sorguyu incelediğimizde iki tablodaki tc 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

2.Left Join

3.Right Join

4.Full Join

 

 

 

 

 

 

1. Inner Join:

 

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

 

select bilgi.adi,bilgi.soyadi,notlar.ders,notlar.final
from bilgi inner join notlar
on bilgi.tc=notlar.tc

Yukarıdaki sorguyu çalıştırdığıızda aşağıdaki resimde gördüğünüz sonucu elde edeceğiz.

 

 

 

 

Inner Join eşleşmenin yapılmasını istediğimiz alanlarda boş olan kayıtları sonuca dahil etmedi. Yukarıdaki örneğe göre düşünürsek, tablolardan birinde yer almayan numaralar listelenmeyecektir. Yani 1. tablodaki 5,6 ve 7 numaralı kayıtlar, diğer tablo ile eşleşmeyeceği için sonuca dahil edilmeyecektir. Aynı şekilde 2. tablodaki 9 ve 10 numaralı öğrenciler de listelenmeyecektir.

 

 

2. Left Join:

 

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

 

 

 

Bilgi tablomuzda bulunan bütün kayıtlar left join sayesinde listelenmiştir.Fakat mustafa,ahmet ve aylinin notlar tablosunda herhangi bir bilgileri bulunmadığı için ders ve final bilgileri boş gelmiştir.

 

 

 

3. Right Join:

 

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

 

 

 

 

 

 

Notlar tablosudaki ders ve final alanlarındaki tüm kayıtlar getirildi fakat bilgi tablosundaki bazı alanların null değer de olduğunu gördük.

 

 

 

4. Full Join:

 

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

 

 

 

Her iki tabloda bulunan tüm kayıtlar listelenmiş oldu.

 

 

 

 

 

 

 

 

 

Web hosting by Somee.com