• 30-10-2010, 23:50:44
    #1
    Merhaba benım sorunum 3 farklı tablodan ortak bilgileri ilişkilendirip ekrana yazdırmak .Şu şekilde acıklayım

    tablo 1
    id ve adi
    tablo 2
    id tablo1id ve adi
    tablo3
    id tablo1id tablo2id tablo2id

    fazla yer kaplamasın diye değerleri sınıflandırıp isimlerine id verdim ve tablo 3 e id lerini kayıt ettim .Ekrana yazıdırıken veri tabanı sorrgulaması yaptıgımda id ler geliyor diğer tablolardan o id nini adini ekrana nasıl yazdırırım .Buraya yazmadan önce cok arastırdım ama 2 tabloyu birleştirme ile ilgili örnekler buldum.Yardım Edebilirseniz Sevinirim .
  • 31-10-2010, 00:14:00
    #2
    mysql JOIN ve union select i okumanı tavsiye ederim.

    mesela ogrenci tablosu no,ad,soyad
    dersler id,ogrenci_no,ogretmen(foreign key ogrenci no,ogretmen)
    ogretmen id,ad,soyad,
    gibi tablolarda join ile bağlayabilirsin , hangi tabloyu birbirine bağlayacağın sana kalmış veritabanı yapınıda bu ilişkilere gore yapmalısın. relational database in php diye google la istersen.

    örnek kodda istersen.
    SELECT * FROM ogrenci LEFT JOIN (desler,ogretmen)
                     ON (dersler.ogrenci_no=ogrenci.no AND dersler.ogretmen=ogretmen.id)
    bu tarz bişi 3 tabloyu biribirine bağlamana yardım eder hızlı yazdım yanlış olabilir. mantığı bu şekilde
  • 31-10-2010, 03:59:48
    #3
    eyvallah hocam deneyeceğim
  • 31-10-2010, 03:54:07
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Şu şekilde de yapabilirsin:

    $sql = 'select t1.adi, t2.adi, t3.* from tablo1 t1, tablo2 t2, tablo3 t3 where 
    t3.tablo1id=t1.id and t3.tablo2id=t2.id';
  • 31-10-2010, 11:32:33
    #5
    o şekilde denedim ama tablo 3 dekıleri yazdırıken tablo1 id kısmının adını yazdırdım ama tablo 2 den gelen id leri direk id olarak yazdı adlarını yazdıramadım..
  • 31-10-2010, 11:54:38
    #6
    Eposta Aktivasyonu Gerekmekte
    Tablo3'te tablo1 ve tablo2 'nin idlerini tutuyorsun ama tablo2'de neden tablo1'in idsinide tuttun anlamadım. Yada neden tablo3'te tablo1 ve 2nin id'sini tutun o zaman onu anlamadım.

    inner join ile yapabilirsin
    $sql = "Select t1.adi as 't1Adi',t2.adi as 't2Adi' From tablo1 as t1 inner join tablo2 as t2 on t1.id=t2.tablo1id Where t1.id='$ID'";
    $query = mysql_query($sql) or die (mysql_error());
    $assoc = mysql_fetch_assoc($query);
    
    echo 'Tablo1\'deki kişinin Adı : ' . $assoc['t1Adi'];
    echo 'Tablo2\'deki kişinin Adı : ' . $assoc['t2Adi'];
  • 31-10-2010, 18:16:22
    #7
    Mesela benzer bir örnek vereyim
    tablo 1 ogretmenler
    id ve adi
    tablo 2 dersler diyelim
    id ogretmenid dersadi
    tablo 3 ogrenciler
    id ogretmen id ders id si 2 ders id gibi bu sekilde hazırlamıstım.
  • 31-10-2010, 19:02:59
    #8
    Eposta Aktivasyonu Gerekmekte
    $sql = "Select t1.adi as 'ogretmenAdi',t2.dersadi as 'dersAdi',t3.ders2 as 'ders2' From ogretmenler as t1 inner join dersler as t2 on t1.id=t2.ogretmenid inner join ogrenciler as t3 on t3.ogretmenid=t1.id Where t3.id='$ogrenciID'";
    İstediğin sorgu bu şekilde. Anlaman için tablo alanlarına göre düzenledim. İsim farklılıklarını kendine göre uyarlamalısın.
  • 31-10-2010, 19:18:28
    #9
    sağolasın hocam teşekkürler