MYSQL' DE JOIN İFADELERİ

 Bir önceki bölümde MySQL' de AND, OR ve NOT ifadelerinin WHERE komutunda kullanımını görmüş, örneklerle birlikte de aralarındaki farklara değinmiştik. Bu bölümde ise MySQL içerisinde yine sıkça kullanılan "JOIN" komutlarını örneklerle birlikte görüyor olacağız. 

JOIN komutları, birbiri ile ilişkisi bulunan tablolar üzerinde işlem yaparken kullanılan komutlardır. Sorgu yazılırken bu JOIN komutları iki tablonun arasına yazılarak sorgu içerisinde kullanılır. Bu tür sorguları yazarken JOIN ifadelerinin solunda ve sağında yer alan tablo isimlerine dikkat edilmesi gerekmektedir. Gelişigüzel yazmanız durumunda istediğiniz sonuçları elde edemeyebilirsiniz. JOIN' lerin üç türü bulunmaktadır. Bunlar; "INNER JOIN", "LEFT JOIN" ve "RIGHT JOIN" olarak sıralanabilir. INNER JOIN ile başlayalım.

INNER JOIN komutu, birbiri ile ilişkisi bulunan iki tablodan birine herhangi bir üstünlük özelliği sunmadan, eşit tutarak işlemlerin gerçekleşmesini sağlayan komuttur. Yani iki tablodaki verilerden birbiri ile eşleşen verilere ait bilgilerin, sonuç kümesine dahil olduğu komuttur. Bir örnekle bu durumu daha iyi anlamaya çalışalım.

kisiler tablosu

kisi_bilgileri tablosu


Veritabanımızda "kisiler" ve "kisi_bilgileri" isimlerinde iki adet tablo bulunmaktadır ve bu tablolardan kisiler tablosunun "kisi_bilgileri_id" isimli bileşeni ile kisi_bilgileri tablosunun "id" alanı birbiri ile ilişkilidir. Yani örnek vermek gerekirse, kisiler tablosundaki ayşe isimli kişinin kisi_bilgileri_id sütununda 1 yazması demek, kisi_bilgileri tablosunda id alanında 1 yazan satırdaki bütün verilerin o kişiye ait olduğu anlamına gelmektedir. İlişkili tabloların mantığı bu şekilde çalışmaktadır. Birbiri ile ilişkili tabloların belirli sütunları birbirleri ile bağlantılıdır ve bu durum o tablolarda bulunan verilerin birbirleri ile ilişkisi olduğu anlamına gelmektedir.

Örneğimize gelecek olursak, SELECT komutu ile kisiler tablosunun isim sütunu ile kisi_bilgileri tablosunun yaş sütununa ait verilerin sonuç kümesine gelmesini istedik. FROM komutu ile tablo isimlerini yazarken iki tablo ismi arasında INNER JOIN komutunu ekledik ve böylece bu iki tablonun birbirine karşı bir üstünlüğü olmadığını belirtmiş olduk. Son olarak ON ifadesini WHERE komutu gibi kullanarak, bu iki tablodaki birbiri ile ilişkili sütunları birbirine bağlama işlemini gerçekleştirmiş olduk ve böylelikle kişilere ait yaş bilgilerine ulaşmış olduk. 


Sonuç kümesinden de anlaşılacağı üzere, iki tablonun ilişkili sütunlarından birbiri ile eşleşen veriler, sonuç kümesi olarak karşımıza gelmektedir. 

LEFT JOIN komutunda durum biraz farklıdır. LEFT JOIN komutu, sorgu yazılırken sol tarafına yazılan tablo isminde yer alan verileri, herhangi bir eşleşme durumu olmasa dahi sonuç tablosuna getireceğini garanti eden bir komuttur. Yani LEFT JOIN komutunun solunda ismi yazan tablonun SELECT komutunda belirtilen bütün verileri gelirken, sağ tarafında ismi yazan tablonun sadece eşleşen verileri sonuç kümesine gelecektir. Hemen bir örnekle bu durumu da inceleyelim.


Sonuç Kümesi

Az önceki örneğimizi bu sefer LEFT JOIN ifadesi ile tekrar yazdık. Görüldüğü üzere ilk sorgudan farklı bir sonuç kümesi elde etmiş olduk. Bunun sebebi LEFT JOIN komutu ile kisiler tablosuna ait verilerin sonuç kümesine gelmesini garanti altına almış olmamızdan kaynaklanmaktadır. Sonuç kümesinden de görüleceği gibi, cemre ismine ait maas ve yaş bilgisi bulunmamasına rağmen sonuç kümesine dahil olmuştur ve yaş bilgisi bulunmadığı için o alan NULL olarak gelmiştir.

Son olarak RIGHT JOIN komutuna bakacak olursak, bu komut da LEFT JOIN komutunun tam tersi bir işlem gerçekleştirmektedir. Yani RIGT JOIN komutu, sağ tarafına ismi yazılan tablonun bütün verilerinin sonuç kümesine dahil edilmesini garanti etmektedir. Bunu da yine bir örnekle görelim.


Sonuç Kümesi

Yazmış olduğumuz sorguyu bu sefer de RIGHT JOIN komutu ile yineledik. Görüldüğü üzere cemre isimli kişiye ait herhangi bir bilgi sonuç kümesine dahil olmamıştır. Ancak kisi_bilgileri tablosuna ait bütün veriler sonuç kümesinde bulunmaktadır. Sizde sorgularınızda JOIN komutlarını kullanarak tablolara üstünlük sağlayabilir ve ilişkili tablolar üzerinde rahatlıkla işlemlerinizi gerçekleştirebilirsiniz. İyi çalışmalar.

Share:

0 yorum:

Yorum Gönder