JOIN KOMUTLARI-INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL JOIN

Join Komutları Nasıl Kullanılır ?

Merhabalar.Bu yazımda JOIN komutlarını (Inner Join,Right Join, Left Join,Full Join )inceleyeceğiz.Join örnekleri yaparak aslında Join komutlarının ilişkisel veritabanı için önemini daha iyi anlayacağız.

Projelerimizde ilişkisel veritabanı olmazsa olmazdır.İlişkisel veritabanı birden fazla tabloyu birbirine bağlayarak işlem yapabilmemizi sağlar.Sonuç olarak veri tekrarlanması önlenmesiyle veri yönetimi daha basit hale gelir.

İlişkisel veritabanında ayrı olan tabloları tek tabloymuş gibi kullanmak için JOIN komutlarından yararlanırız.Yazımda bahsettiğim konuların ana başlıkları;


Inner Join Kullanımı

Inner Join en çok kullanılan Join türlerinden birisidir.Çalışma mantığını özetleyecek olursak; ilişkili tabloların belirtilen sutünlarında eşleşen kayıtları tek bir tablo içerisinde toplar.



MySQL Inner Join Örneği

Inner Join Kullanımı

Yukarıda birbiri ile ilişkili olan Yazar ve Kitap tablosu bulunmaktadır.Bu ilişki yazar tablosunun birincil anahtarı olan yazar_id ‘nin kitap tablosunda ikincil anahtar olmasından kaynaklanmaktadır.Sorguyu yazarken bunu göz önünde bulundurarak iki tabloda mevcut olan yazar_id sütunu üzerinden işlem yapacağız. SQL sorgusu ;

SELECT * from kitap INNER JOIN yazar on kitap.yazar_id=yazar.yazar_id


Sonuç tablosu;


İki tablodada bulunan ortak kayıtlar ekrana gelmiştir.Kitap tablosunda bulunup yazar tablosunda bulunmayan veya yazar tablosunda bulunup kitap tablosunda bulunmayan kayıtlar ekrana getirilmemiştir.

Özet olarak iki tablonun kesişiminde bulunan kayıtlar ekrana gelecektir.

Not : Ekrana çıkacak tablonun daha düzenli olması için ‘Select’ komutundan sonra ekrana gelmesini istediğimiz sütün isimlerini yazarak ‘as’ komutu ile sutüna başlık verebiliriz.

SELECT kitap.kitap_ad as Kitap, yazar.yazar_ad as Yazar 
from kitap INNER JOIN yazar on kitap.yazar_id=yazar.yazar_id


Sonuç Ekranı ;


Çoklu Inner Join Kullanımı


Inner Join komutu ile istediğiniz kadar tabloyu birbirine bağlayabilirsiniz.Inner Join i ikiden daha fazla tabloda kullanmak için ;

Select * from tablo1 Inner Join tablo2 on
tablo1.tablo_sutün_1=tablo2.tablo_sutün_2 Inner Join tablo3 on
tablo2.tablo_sutün_2= tablo3.tablo_sutün_3


Sorgu bu şekilde ekleme yapılarak devam eder.


Left Join Kullanımı



Left Join’in inner Join den farkı inner join sadece iki tabloda ortak bulunan verileri gösterir.Ancak Left Join le sol yandaki tabloya ait verilerin tümü ekrana yazdırılır.Karşılığı yani sağ kısımdakilere karşılık gelen satırlar boş ise NULL ifadesi yer alır.



MySQL Left Join Örneği

Inner Join Kullanımı

SELECT * from kitap LEFT JOIN yazar on kitap.yazar_id=yazar.yazar_id


Sonuç Ekranı;


Sql kodumuzu “as” komutu ile daha düzenli getirirsek ;

SELECT kitap.kitap_ad as Kitap, yazar.yazar_ad as Yazar 
from kitap LEFT JOIN yazar on kitap.yazar_id=yazar.yazar_id


Sonuç Ekranı ;


Çoklu Left Join Kullanımı


Left join’ni ikiden fazla tabloda kullanmak için ;

Select * from tablo1 Left Join tablo2 on
tablo1.tablo_sutün_1=tablo2.tablo_sutün_2 Left Join tablo3 on
tablo2.tablo_sutün_2= tablo3.tablo_sutün_3



Right Join Kullanımı


Right Join kullanım mantığı Left Join’in tam tersidir.Sağ yandaki tabloya ait verilerin tümü ekrana yazdırılır.Karşılığı yani sol kısımdakilere karşılık gelen satırlar boş ise NULL ifadesi yer alır.



MySQL Right Join Örneği

Inner Join Kullanımı
SELECT * from kitap RIGHT JOIN yazar on kitap.yazar_id=yazar.yazar_id


Sonuç Ekranı;


Sql kodumuzu “as” komutu ile daha düzenli getirirsek ;

SELECT kitap.kitap_ad as Kitap, yazar.yazar_ad as Yazar 
from kitap RIGHT JOIN yazar on kitap.yazar_id=yazar.yazar_id


Sonuç Ekranı;



Çoklu Right Join Kullanımı


Right join’ni ikiden fazla tabloda kullanmak için ;

Select * from tablo1 Right Join tablo2 on
tablo1.tablo_sutün_1=tablo2.tablo_sutün_2 Right Join tablo3 on
tablo2.tablo_sutün_2= tablo3.tablo_sutün_3


Join Komutlarının Sağladığı Kolaylık Nedir ? Pdo İle Join Örneği


Join komutları Pdo ile nasıl kullanılır ? Ne gibi kolaylıklar sağlar ? Bu soruları basit bir pdo ile join örneği yaparak cevaplayacağım.



PDO İle Join Komutları Kullanımı Örneği

Inner Join Kullanımı


Bu örnekte kitap_id=’4′ olan kitabı ve kitapla ilişkli olan yazarı ekrana yazdıralım.Bu işlemi join komutlarını kullanmadan ve join komutlarını kullanarak yapalım.

Join Komutu Kullanmadan ;

<?php

$db = new PDO(
"mysql:host=localhost;dbname=veritabanı_ismi", "kullanici_adi", "sifre"
); 
//VT BAĞLANTISI


$sorgu1=$db->prepare("SELECT * FROM kitap where kitap_id=4"); 
$sorgu1->execute();
$kitapcek=$sorgu1->fetch(PDO::FETCH_ASSOC); 

$sorgu2=$db->prepare("SELECT * FROM yazar where yazar_id=:yazar_id");
$sorgu2->execute(array(
'yazar_id'=>$kitapcek['yazar_id'] )); 
$yazarcek=$sorgu2->fetch(PDO::FETCH_ASSOC);

echo $kitapcek['kitap_ad']."<br>"; 
echo $yazarcek['yazar_ad'];  
 
?>

__________________________________________________________________
Ekran Çıktısı 

Özgürlük
Yusuf Önal
__________________________________________________________________


Join Komutu PDO Örneği ;

<?php

$db = new PDO(
"mysql:host=localhost;dbname=veritabanı_ismi", "kullanici_adi", "sifre"
); 
//VT BAĞLANTISI


$sorgu=$db->prepare("SELECT * FROM kitap Inner Joın yazar on kitap.yazar_id=yazar.yazar_id where kitap.kitap_id=4"); 
$sorgu->execute();
$cek=$sorgu->fetch(PDO::FETCH_ASSOC); 

echo $cek['kitap_ad']."<br>"; 
echo $cek['yazar_ad'];  
 
?>

__________________________________________________________________
Ekran Çıktısı 

Özgürlük
Yusuf Önal
__________________________________________________________________


Görüldüğü gibi join komutu kullanmadan 2 adet sorgu ile yaptığımız işlemi join komutu kullanarak tek sorguda yapabiliyoruz.

Inner Join, Left Join, Right Join Aynı Sorguda Nasıl Kullanılır ?


Farklı join komutlarını aynı sorgu içerisinde beraber kullanmamız gerekebilir.Kullanım çok kolaydır.Tek yapmamız gereken ihtiyaçlar doğrultusunda hangi komutları kullanacağımızı belirlemektir.

Örnek verecek olursak ;

Birbiri ile ilişkili 3 adet tablo var.Bu tablolar ; kitap tablosu, yazar tablosu ve konu tablosu.Bu 3 tabloyu sorgumuzda join komutları ile tek tablo haline getirelim ve kitap tablosundaki tüm kayıtlar ile kitap tablosunda konu ve yazar tablosunda eşleşen kayıtları ekrana getirelim.

SELECT * from konu RIGHT JOIN kitap on konu.konu_id=kitap.konu_id 
LEFT JOIN yazar on kitap.yazar_id=yazar.yazar_id


Sonuç Ekranı;


Sql kodumuzu “as” komutu ile daha düzenli getirirsek ;

SELECT kitap.kitap_ad as Kitap, yazar.yazar_adsoyad as Yazar, konu.konu_ad as Konu 
From konu RIGHT JOIN kitap on konu.konu_id=kitap.konu_id 
LEFT JOIN yazar on kitap.yazar_id=yazar.yazar_id


Sonuç Ekranı;



Full Join Nasıl Kullanılır ? MySQL Full Join Kullanımı


MySQL full join nasıl kullanılır ? Full join komutu MySQL ‘de geçerli değildir.Ancak Left ve Right Join’i beraber kullanarak Full Join‘i taklit edebiliriz.MySQL de full join‘i taklit ederken “UNION” komutundan yararlanırız.



MySQL Full Join Kullanımı Örneği


Inner Join Kullanımı
SELECT yazar.yazar_adsoyad AS yazar,kitap.kitap_ad as Kitap 
FROM yazar LEFT JOIN kitap ON yazar.yazar_id = kitap.yazar_id 
UNION 
SELECT yazar.yazar_adsoyad AS yazar,kitap.kitap_ad as Kitap 
FROM yazar RIGHT JOIN kitap ON yazar.yazar_id = kitap.yazar_id


Sonuç Ekranı;

Yazar Doğan Kablan