- Anasayfa
- Veritabanı
- MySql
- SQL'de JOIN (INNER JOIN, LEFT JOIN, RIGHT JOIN ) Kullanımı
Beyaz.Net İpucu
SQL'de JOIN (INNER JOIN, LEFT JOIN, RIGHT JOIN ) Kullanımı
SQL de birbiri ile ilişkili tablolardan veri çekmek için JOIN komutlarını kullanırız.
INNER JOIN, LEFT JOIN, RIGHT JOIN komutları en sık kullanılan komutlardır.
Şimdi bunları örnekleyerek inceleyelim.
kitaplar:
| id | kitap_isim | yil | sayfa | fiyat | yazarid | yayineviid |
| 1 | saklı ev | 1995 | 255 | 20 | 1 | 2 |
| 2 | son moda | 2002 | 652 | 25 | null | 2 |
| 3 | gelecek | 2007 | 214 | 12 | 2 | 1 |
| 4 | bir umut | 2008 | 421 | 18 | 3 | 1 |
yazarlar:
| id | yazar_isim | soyisim | yas |
| 1 | ekrem | sever | 28 |
| 2 | orhan | erdem | 24 |
| 3 | orhan | karasu | 34 |
| 4 | isa | bereket | 43 |
Görüldüğü üzere kitaplar tablomuzdaki yazar id, yazarlar tablomuzdaki id ile ilişkilendirilmiş.
INNER JOIN
Bu iki tablodaki verileri birleştirerek bize cevabı döndürür.
| SELECT kitaplar.kitap_isim, yazarlar.yas FROM kitaplar INNER JOIN yazarlar ON kitaplar.yazarid = yazarlar.id |
bu kodun bize cevabı şu tablo olacaktır:
| kitap_isim | yas |
| saklı ev | 28 |
| gelecek | 34 |
| bir umut | 43 |
Görüldüğü gibi dönen listede son moda adlı kitap bulunmamaktadır. Sebebi ise kitaplar tablosundaki yazarid alanında null değerinin olmasıdır. INNER JOIN iki tablodaki sadece birleşme şartını sağlayan verileri döndürür.
LEFT JOIN
İki tabloyu birleştirmenin ikinci yolu ise “LEFT JOIN” kullanmaktır.
Aşağıdaki sql cümlesini ele alalım:
| SELECT kitaplar.kitap_isim, yazarlar.yazar_isim FROM kitaplar LEFT JOIN yazarlar ON yazarlar.id = kitaplar.yazarid |
Bu kodun da cevabı şu olacaktır:
| kitap_isim | yazar_isim |
| saklı ev | ekrem |
| son moda | null |
| gelecek | orhan |
| bir umut | orhan |
LEFT JOIN soldaki tablonun tamamını alır ve diğer tablodaki ilişkili verileri döndürür.
RIGHT JOIN
LEFT JOIN ile RIGHT JOIN hemen hemen aynıdırlar, RIGHT JOIN cümlesinin yaptığı iş sadece sağdaki tablonun tamamını almaktır.
Aşağıdaki sql cümlesini ele alalım:
| SELECT kitaplar.kitap_isim, yazarlar.yazar_isim FROM kitaplar RIGHT JOIN yazarlar ON yazarlar.id = kitaplar.yazarid |
Bu sql cümlesinin cevabı ise:
| kitap_isim | yazar_isim |
| saklı ev | ekrem |
| son moda | orhan |
| gelecek | orhan |
| bir umut | orhan |
| NULL | isa |
Görüldüğü gibi sağda yer alan yazarlar tablosunun tamamını sonuç olarak aldı ve yazara karşılık gelen bir kitap bulunmadıysa ilgili alanın değerini “null” olarak atadı.
İlişkili veritabanlarında “join” cümleleri çok işe yarar, ve genellikle “inner join” pek çok kez kullanılır. LEFT JOIN ile RIGHT JOIN birbirlerine benzerler, sadece biri soldaki, diğeri sağdaki tablonun tamamını alır ve yukarıdaki örnekte olduğu gibi, eğer ilgili yazarın her hangi bir kitabı yoksa, geri döndürdüğü değerlerde “null” kelimesine rastlanır.