16 Ocak 2017 Pazartesi
JOIN Komutu
Şu ana kadar anlatmış olduğumuz sorgular sadece tek tablo kullanılarak gerçekleştirildi. Bazı durumlarda tek bir tablo ile çalışmak yeterli olmayacaktır.
Böyle bir durumda birleştirme/eşleştirme adını verdiğimiz bir yapı kullanılmak zorundadır. Bu işlemin gerçekleştirilmesi için JOIN komutu kullanılmaktadır.
JOIN işlemini anlatmak için "kategoriler" ve "urunler" tablolarını göz önüne alalım. Bu tablolarda yer alan kayıtlar aşağıda görüldüğü şekildedir.
Dikkat edilirse, "kategoriler" tablosunda ilgili ürünün bir kategori numarası ve ait olduğu kategori adı bulunmaktadır.
Bir ürüne ilişkin detaylar bu tabloda verilmemiş olup, gerekli diğer detaylar "urunler" tablosunda verilmiştir. Bu iki tablo birbirlerine 'kategoriID' ile bağlıdır.
Şimdi bu iki tabloyu kullanarak iki tablo arasındaki bağlantıyı da gösteren SQL ifadesini şöyle yazabiliriz.
SELECT K.kategoriID, K.kategoriAdi, U.urunAd
FROM kategoriler K, urunler U
WHERE K.kategoriID = U.kategoriID
SELECT K.kategoriID, K.kategoriAdi,U.urunAd
FROM kategoriler K, urunler U
WHERE K.kategoriID = U.kategoriID
Bu SQL cümlesinde tablolara bir takma ad verilmiştir.
Buradaki “WHERE K.kategoriID = U.kategoriID” cümlesi ile bir birleştirme işlemi gerçekleştirilmiştir. Yani "kategoriler" tablosundaki 'kategoriID' ile "urunler" tablosundaki 'kategoriID' eşit ise kayıtlar listelenecektir.
SELECT K.kategoriID, K.kategoriAdi, U.urunAd
FROM kategoriler K, urunler U
WHERE K.kategoriID = U.kategoriID
Bu işlemi INNER JOIN komutu ile gerçekleştirmek istersek SQL cümlemiz aşağıdaki gibi olacaktır.
SELECT urunAd, kategoriAdi
FROM kategoriler
INNER JOIN urunler
ON kategoriler.kategoriID = urunler.kategoriID
Burada INNER JOIN ifadesi her iki tabloda da ortak olan değerlere bakarak eşit olanları ekrana listeleyecektir.
INNER JOIN işlemi her türlü FROM yan cümlesi ile kullanılabilir. En sık kullanılan birleştirme türüdür.
Her iki tabloda eşleşen değerler var ise birleştirme işlemi gerçekleştirilir ve kayıtlar ekrana listelenir.
INNER JOIN işlemini daha iyi anlatabilmek için daha karmaşık bir örnek yapalım. Aşağıdaki ilişkiyi göz önüne alalım.
Dikkat edilirse, birden fazla tablo birbirlerine farklı anahtarlar kullanılarak bağlanmış durumdadırlar. INNER JOIN komutu bu tablolarda ortak olan değerler kullanılarak birleştirme işlemini çok kolay bir şekilde yerine getirmektedir.
Bu dört tablonun INNER JOIN komutu kullanılarak yazılan SQL cümlesi şöyle olacaktır:
SELECT * FROM (kategoriler INNER JOIN urunler ON kategoriler.kategoriID = urunler.kategoriID) INNER JOIN (siparisler INNER JOIN siparisDetay ON siparisler.siparisID = siparisDetay.siparisID) ON urunler.urunID = siparisDetay.urunID
Aşağıdaki söz dizimi kullanılarak INNER JOIN ifadesi içerisinde ON yan cümleleri de yazabilirsiniz.
SELECT alanlar
FROM tablo1 INNER JOIN tablo2
ON tablo1.alan1 karşılaştırma tablo2.alan1 AND
ON tablo1.alan2 karşılaştırma tablo2.alan2) OR
ON tablo1.alan3 karşılaştırma tablo2.alan3)