Join İşlemleri
İlişkisel veritabanının en temelinde birden fazla tablo üstünde birlikte işlem yapabilmek yatar. Bu sayede verilerin tekrarlaması önlenmiş olur ve sonuçta veri yönetimi kolaylaşır.
Joinler için Tablolarımız
iller tablosu | hava_durumu tablosu | |
Inner Join
Inner Join, sadece iki tabloda da var olan verileri esas alır; eğer bir tabloda karşılık yoksa, o kaydı hiç ekrana getirmez.
Inner Join ile tüm alanları karşılaştırıp bağlayabilirsiniz; ancak Memo ve OLE Object alanlarını birleştirmek isterseniz hata alırsınız. Bu alanlarla JOIN işlemi yapmayınız.
Bir sorguda istediğiniz kadar Inner Join kullanabilirsiniz. Böylece sadece iki tabloyu değil; istediğiniz kadar tabloyu aynı anda birbirine bağlayabilirsiniz.
Inner Join, sadece iki tabloda da var olan verileri alır. Yani eğer tblKisiler tablosundaki bir kişinin tblSiteler tablosunda hiç kaydı olmasaydı yukarıdaki sorguda o kişi hiç seçilmeyecekti ve sonuçta çıkmayacaktı.
SELECT iller.ilad, hava_durumu.durum
FROM iller, hava_durumu
WHERE iller.ilno = hava_durumu.ilno
veya
SELECT iller.ilad, hava_durumu.durum
FROM iller INNER JOIN hava_durumu ON iller.ilno=hava_durumu.ilno
Left Join
LEFT sözcüğünden önceki tablo soldaki tablo, sonraki tablo sağdaki tablodur.
Inner Join'e oldukça benzese de bu bağlama türünün bir farkı vardır. Inner Join, daha önce de dediğim gibi, sadece iki tabloda da var olan verileri esas alır; eğer bir tabloda karşılık yoksa, o kaydı hiç ekrana getirmez. Ancak LEFT veya RIGHT join 'de istediğiniz yandaki (Left veya Right) tüm veriler ekrana gelir.Tanımı biraz karışık gibi de olsa, birazdan örneklerle daha iyi anlayacaksınız.
Eğer bir sorgu da Left JOIN kullanırsanız,( tabloSOL.alan1 = tabloSAG.alan2 ), sol taraftaki tabloda bulunan (tabloSOL) tüm veriler, sağdaki tabloda olup olmadığına bakılmaksınız ekrana yazılacaktır. Karşılığı bulunanlarda gerekli veri ekranda yazacak olmayanlarda ise <NULL> yazacaktır.
LEFT joinde soldaki tablodaki tüm değerler listelenirken sağdaki tablodaki değerlerden karşılığı olanlar yazılır, karşılığı olmayanlar yerine NULL yazılır.
SELECT iller.ilad, hava_durumu.durum
FROM iller LEFT JOIN hava_durumu ON iller.ilno=hava_durumu.ilno
Right Join
Eğer bir sorgu da Right JOIN kullanırsanız,( tabloSOL.alan1 = tabloSAG.alan2 ), sağ taraftaki tabloda bulunan (tabloSAG) tüm veriler, soldaki tabloda olup olmadığına bakılmaksınız ekrana yazılacaktır. Karşılığı bulunanlarda gerekli veri ekranda yazacak olmayanlarda ise <NULL> yazacaktır.
RIGHT joinde sağdaki tablodaki tüm değerler listelenirken soldaki tablodaki değerlerden karşılığı olanlar yazılır, karşılığı olmayanlar yerine NULL yazılır.
SELECT iller.ilad, hava_durumu.durum
FROM iller RIGHT JOIN hava_durumu ON iller.ilno=hava_durumu.ilno