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
KONU İLE İLGİLİ ÖRNEKLER
Bu konu ile ilgili örnek bulunmamaktadır.
65346 kez okundu.