
iki tablodan ikinci tablonun tüm kayıtlarını, ilk tablonun ise sadece ikinci tablodaki kayıtlar ile eşleşen ( ortak olan ) kayıtlarını listelemek istediğimizde right join sorgusu kullanılır.
Daha önce left join yazımda soldaki tablonun tüm kayıtlarının geldiğini söylemiştik. right join ise bunun tam tersidir. Burada join den sonra yazdığımız yani sağdaki tablo ana tablo oluyor ve bu tablodaki kayıtların hepsi eşleşme olsun olmasın listeye geliyor. Soldaki tabloda eşleşmesi olmayan kayıtların kolonları ise NULL (boş) olarak gelir.
tüm kursları, kullanıcılar tablosunda eşleşmesede listeleyen right join sorgusu ( tüm kolonları seçme)
kullanıcılar tablosu


select * from kullanici
right join
kurs
on
kullanici.kurs_id=kurs.id
sorgumuzu okuyacak olursak; kurs tablosundaki tüm kayıtları getir, bu kurslara kayıtlı olan kullanıcılar varsa onların bilgilerini de yanına ekle demiş oluyoruz.

Burada dikkat ederseniz tüm kurslar listeye geldi. Hiç kullanıcısı olmayan kursların kullanıcı kolonları ise NULL olarak görünüyor.
eğer sorgumuzu
select
kullanici.id,kullanici.ad,kullanici.kurs_id,kurs.kurs_ad
from kullanici
right join
kurs
on
kullanici.kurs_id=kurs.id
kodları ile değiştirirsek.
sadece seçtiğimiz kolonları getirir.

right join nerede işimize yarar?
Şimdi bir senaryo düşünelim. Sitenizdeki tüm kursları listelemek ve her kursa kimlerin kayıtlı olduğunu göstermek istiyorsunuz. Henüz kimsenin kayıt olmadığı kurslar da listede görünsün istiyorsunuz. İşte bu durumda right join kullanabiliriz.
Hatta bu sorguya where şartı ekleyerek hiç kullanıcısı olmayan kursları da kolayca bulabiliriz.
select kurs.kurs_ad from kullanici
right join kurs on kullanici.kurs_id=kurs.id
where kullanici.id is null
Son olarak şunu da söyleyeyim; right join ile yaptığınız her sorguyu tabloların yerini değiştirerek left join ile de yazabilirsiniz. Yani from kurs left join kullanici yazarsanız aynı sonucu alırsınız. Hangisini kullanacağınız tamamen size kalmış.
Henüz Yorum Yapılmamış. İlk Yorumu Siz Yapın!