28 Haziran 2012 Perşembe

MySQL inner join kullanımı

Bu dersimizde inner join kullanımı hakkında biraz bilgi vereceğim.
sql'de inner join, birkaç tane tabloyu birbirine bağlamaya yarar. Aslında birer view görevi görür diyebiliriz. Mesela bir Üyeler tablomuz var, sonra bir de mesajlar tablomuz  var ve Üyelelrimizin okul, meslek, il bilgilerini de görmek istiyoruz. işlem biraz karışık gibi gözükebilir.Veritabanına ne kadar az bağlanıp veri çekersek o kadar performansımız artar.
Aşağıdaki şekildeki viewi inner join yaparak örnekleyelim.



Şimdi ilk olarak tablolardan alacağımız yani kullanacağımız alanları belirlememiz gerekiyor. Bunları SELECT ile FROM arasında yazmamız gerekiyor. Select..... from şeklinde.


SELECT u.uyeID, u.uye_adi, .u.email, o.okul, i.il_adi, m.meslek,ms.mesaj, ms.mesajID
FROM uyeler AS u 
INNER JOIN mesajlar as ms ON ms.uyeID = u.uyeID
INNER JOIN okullar as o ON o.okulID = u.okulID
INNER JOIN iller as i ON i.ilID = u.ilID
INNER JOIN meslekler as m ON m.meslekID = u.meslekID
WHERE u.uyeID=5


Ne yaptığımıza bakalım: SELECT ile başlayan satırda kullanacağımız alanları yazdık. burada kısaltma kullandık u, m, o gibi bunlar aslıda tabloların isimleri, daha sonra göreceğiz AS ile yeni isim verdik bu tablolara
Sonra FROM dedik ve tablo isimleri yazmaya başladık. Tabloları yazarken yazımda kolaylık olsun diye kısaltalım diye düşündük ve AS kullandık tabloları geçici olarak yeniden adlandırdık. uyeler için u kullandık uyeler AS u şeklinde. şimdi bu sqlde uyeler tablosundan alacağımız veya kullanacağımız her alanın başına uyeler değil u koyacağız. ve diğerleri de aynı şekilde.
Daha sonra INNER JOIN dedik ve tabloları birbirine bağlamaya başladık. ilk olarak dedik ki uyeler tablosunu mesajlar tablosu ile ilişkilendirelim. mesajlar tablosundaki uyeID ile uyeler tablosundaki uyeID ortak payda olarak alınır. ikisini birbirine eşitlediniz mi işlem tamam. onu da ON ile yapıyorsunuz.
ON ms.uyeID = u.uyeID şeklinde.
Bu sorguları istediğiniz kadar çoğaltabilirsiniz. Fakat şunu da bilmelisiniz ki bu sorguyu tamamen karşılayan sonuçlar çıktı olarak alınır. Mesela uyeler tablosunda ilID seçiilmemişse çıktı alınamaz. Buna dikkat etmelisiniz.
Bir de where kullandık buraya da mesela querystringten alacağınız bir uyeID için sonuç göstereceksiniz işte bu alanda onu belirtirsiniz.




Hiç yorum yok:

Yorum Gönder