LEFT JOİN NASIL KULLANILIR?
PHP Tutorials, SQL February 20th, 2008->
Bazen şöyle bir durumla karşı karşıya kalırız.uyeler tablomuz ile mesajlar tablomuz ayrıdır.Mesela örnek vermek gerekirse,üye olan kişi,bir foruma yada ziyaretçi defterine mesaj bırakmak isteyebilir.İyi ama bu iki tablodaki verileri nasıl ilişkilendireceğiz,işte tüm mesele burda.Yani üyeler tablosuyla mesajlar tablosu ayrı olduguna göre; mesajlar tablosuna giden bir mesajın hangi üyeye ait olduğunu nasıl belirleyeceğiz.İşte ben size şimdi onu anlatıcam.Aslında işin temelinde mantık arama felan yok,tamamen birleştirme gibi bir komutu mysql un bize vermiş olduğu left join (veya right join) veya inner join ile yapacağız.Şimdi o zaman tablo mantığını ele alalım derim ilk önce.Şöyle düşünelim.Üyeler tablosunda bir id sütunumuz olacak mutlaka.şöyle olsun üyeler tablomuz.
id,adi,soyadi,mail gibi 4 farklı alandan oluşsun.
O halde mesajlar tablomuzu benzer türdeşten nasıl bir ortak alanla benzetebiliriz ki,aynı bilgiyi üyeler tablosunda ilişkilendirilmiş olalım.Ne dediğimi anlamadınız mı? şöyle açıklayayım.mesajlar tablosuna üye_id diye bir alan oluşturalım.buraya da kim mesaj attıysa ona ait kimlik bilgisi yani id değerini koyarsak.Daha sonra bunları birleştirmemiz kolay olmaz mı arkadaşlar.evet elbette olur.o halde mesajlar tablosunu da gelin şöyle oluşturalım
id,konu,mesaj,tarih,uye_id gibi 5 alanda oluşturalım.
Şimdi sizin yaptıgınız formdan mesaj yollanırken,bu id numarasını mesajlar tablosuna nasıl kaydettircez.İşte tum mesele burda.mesela bir form oldugunu düşünün,buraya adını soyadını yazan kişiyi ilk önce sorgulatmanız lazım,üye mi değil mi diye.tabi ben size onu anlatmıcam.sorgudan geçtikten sonra bilgileri mesajlar tablosuna koymak marifet.Yani şöyle düşünün.ziyaretçi defterinize mesaj bırakan biri,forma adını soyadını mesaj konusunu mesajını yazsın yollasın.İyi ama mesajlar tablomuzda uyeler tablosundaki gibi ad ve soyad bölümü yok ki.eee ne yapıcaz.Sadece kişinin idini sorgulatarak id çekmeliyiz arkadaşlar.idini çekersek üye_id hanesine o uyenin idini kaydettirebiliriz.diger gelen form bilgileri zaten bu mesaj tablomuzla ilişkili,onları kaydetmek basit.
formdaki id sorgumuzda şöyle olacak ve daha sonra tablo girdi sql sözdizimimizde şöyle olacak.
-
-
and soyadi='".$_POST['soyadi']."'");
-
-
-
$uye_id=$idal['id'];
-
-
//tabloya formdan gelen bilgileri kaydedelim şimdi
-
-
$veri_kaydi=mysql_query("insert into mesajlar values ('','.......','......','........','$uye_id')");
kayıt işlemimiz bitti.daha sonra kim hangi mesajı atmış left join ile birleştirelim.
-
/* sorgu gonderiyoruz */
-
ON uyeler.id= mesajlar.uye_id");
-
-
-
echo 'mesaj sahibi:'.$get['adi'].' '.$get['soyadi'].' <br />'.$get['konu'].'<br />'.$get['mesaj'].'';
-
-
}



























Son Yorumlamalar