• 02-06-2021, 08:47:42
    #1
    Merhaba pdo altyapısına yeni geçtim açıkçası biraz zorlanıyorum.
    Aşağıdaki gibi bir tablo yapım var:

    kayıtno | kayıt adı | kayıt_acan | kayıt_kapatan| tarih | aciklama
    #5 | test | 1 | 5 | 1994 | deneme aciklama

    Yukarıda ki yapıya göre
    birde kayıt açan ve kapatanları çektiğim bir tablo var.

    kullanici_id | isimSoyisim
    1 | Ahmet
    5 | Mehmet


    Döngüyle kayıtları listelediğim bir sayfa mevcut sayfada while döngüsüyle veri tabanından verileri çekiyorum kayıt açan ve kayıt kapatan kişiler bir birinden farklı ama her seferinde yalnızca bir kişiyi çekip acan ve kapatan'a aynı kişiyi yazıyor

    Bunu nasıl aşabilirim yardımcı olabilirseniz sevinirim.
  • 02-06-2021, 09:16:35
    #2
    2 JOIN kullan.
    SELECT * FROM kayitlar INNER JOIN kullanicilar ON kullanicilar.kullanici_id = kayitlar.kayit_acan INNER JOIN (SELECT kullanici_id, isimSoyisim AS kayitKapatan FROM kullanicilar) AS kullanicilar_temp ON kullanicilar_temp.kullanici_id = kayitlar.kayit_kapatan
  • 02-06-2021, 09:36:23
    #3
    Peki yazdırırken nasıl yazacağım? Şuanda direkt $degisken['veri'] seklinde yazdırarak sonucu alabiliyorum sizin gösterdiğiniz komutta nasıl yapabilirim?
  • 02-06-2021, 10:32:27
    #4
    Önce veritablosu sonra left JOIN ile hem kayıt açan hem kapatan için bağlantı yap kullanıcı varsa veriyi alırsın yoksa null döner
    Aynı tabloya iki defa bağlandığın için sütunları * ile değil tek tek isim vererek öek
  • 02-06-2021, 11:53:46
    #5
    LEFT JOIN ile uyeler tablonuzu hem kayitacan hem kayitkapatan sütunları için iki defa bağlayın. Aşağıdaki örnek çalışan örnektir.

    <?php
    $sth = $db->prepare("SELECT k.kayitno, k.kayitadi, u.isimSoyisim as kayit_acan, u2.isimSoyisim as kayit_kapatan, k.tarih, k.aciklama FROM kayitlar as k LEFT JOIN uyeler as u on (u.kullanici_id = k.kayit_acan) LEFT JOIN uyeler as u2 on (u2.kullanici_id=k.kayit_kapatan) ORDER BY k.kayitno ASC");
    $sth->execute();
    echo '<table><tr><th>Kayıt No</th><th>Kayıt Adı</th><th>Kayıt Açan</th><th>Kayıt Kapatan</th><th>Tarih</th><th>Açıklama</th></tr>';
    foreach($sth->fetchAll(PDO::FETCH_OBJ) as $kayit){
         echo '<tr>';
         echo '<td>'. $kayit->kayitno. '</td>';
         echo '<td>'. $kayit->kayitadi. '</td>';
         echo '<td>'. $kayit->kayit_acan. '</td>';
         echo '<td>'. $kayit->kayit_kapatan. '</td>';
         echo '<td>'. $kayit->tarih. '</td>';
         echo '<td>'. $kayit->aciklama. '</td>';
         echo '</tr>';
    }
    echo '</table>';