SQL de birbiri ile ilişkili tablolardan veri çekmek için JOIN komutlarını kullanırız. Join komutlarında en çok inner, left ve right join kullanılır.
Hızlıca bir örnekle başlayalım;
Kategoriler Tablosu
id kategori_adi 1 SQL
Yazılar Tablosu
id baslik icerik kategori_id 1 SQL’de Join SQL’de join dersi 1
Şimdi burada yazıları kategori adıysa listelemek istersek;
INNER JOIN
SELECT * FROM yazilar as y INNER JOIN kategoriler as k ON y.kategori_id = k.id
Bu sorgunun çıktısı;
id baslik kategori_adi 1 SQL’de Join SQL
Burada dikkat edilmesi gereken şey “ON” dan sonra eşitlediğimiz değerlerin var olması iki tabloda da bu değerlerin eşitlenmesi yani. Birinde varsa birinde yoksa eşitlik olmaz ve o değer gelmez.
LEFT JOIN
SELECT * FROM yazilar as y LEFT JOIN kategoriler as k ON y.kategori_id = k.id
Burdaki sorguda ise yazılar tablosunda kategori_id değeri 1 se kategoriler tablosunda idsi 1 kategori yoksa bile sonuç aşağıdaki gibi olur.
id baslik kategori_adi 1 SQL’de Join null
RIGHT JOIN
LEFT JOIN ile RIGHT JOIN hemen hemen aynıdırlar, RIGHT JOIN cümlesinin yaptığı iş sadece sağdaki tablonun tamamını almak.
id baslik kategori_adi 1 null SQL
Tablolarda ilişki kurmak bana büyük kolaylık getiriyor. İlk başladığım zamanlar bir çok sorgu yapıyordum ama join’i keşfedince bırakamadım ve yıllardır kullanıyorum. Joinde en çok inner join kullanılıyor listeleme yapıldığında null sonuç gözükmemesi adına veriler eşleşiyorsa listelenmesi önceliklidir.