Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

inner join ile birleştirme

Merhaba, ekteki tablo bilgilerini, her bir kullanıcının cevap verdiği 42 soruya göre yan yana join işlemi ile nasıl yapabilirim?

Ekli Dosyalar

+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • Kesali adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    208 cevap - 2 soru
    Grafikten anladığım kadarıyla kullanıcıların verdiği cevapları yan yana sıralamak istiyorsun. Bu iş mantıken ve performans olarak mysql yaptıralacak iş değil.
    Onun yerine tüm datayı çekip kullanıcı id sine göre php ile sıralamak çok daha mantıklı.

    * kısmını çağırmak istediğin sütunların adalarını yaz hem mysql e ekstra yük bindirmez hemde array olarak veriyi çekince işlemesi kolay olur.
    SELECT  *
    FROM cevaplar
    LEFT JOIN
            kullanici
    ON      cevaplar.kullanici_id = kullanici.yuyeid
    


    Bu kod ile database deki tüm kullaniciların sorularını çektik.


    //database bağlantısı query vs
    echo '<table border="1">';
    
    foreach($results = mysql_fetch_array($query) as $result ){
      echo '<tr>';
        echo '<th>'.$result[0].'</th>';
        echo '<th>'.$result[1].'</th>';
        echo '<th>'.$result[2].'</th>';
        echo '<th>'.$result[3].'</th>';
        echo '<th>'.$result[4].'</th>';
       //... array içinde bulunan keyleri 41 taneyi vede user idsini yazdırabilirsin
      echo '</tr>';
    }
    echo '</table>';
    


    Bazı hatalar olabilir genel mantık bu.
    • Kesali adlı üyenin fotoğrafı Kesali
      Biraz baktım yanlış bilgi vermemek adına aşağıdaki linkte bir kişi daha sormuş genel kanı aynen benim dediğim gibi sql bu iş için çok uygun değil. Ayrıca yeni fark ettim th leri td yapman lazım gözümden kaçmış.

      http://stackoverflow.com/questions/1187460/sql-rows-to-columns
      10 yıl önce yazılmış
    • hkor adlı üyenin fotoğrafı hkor
      Cevap için teşekkürler sonuç alamadım, $query üstteki select li olan ifademi orayı tam anlamadım.
      10 yıl önce yazılmış
    • siyahbeyaz adlı üyenin fotoğrafı siyahbeyaz
      $results = "select * from tablo...";

      foreach($results=mysql_fetch_array.....)
      10 yıl önce yazılmış
    • Kesali adlı üyenin fotoğrafı Kesali
      Son sql kodu böyledir yukardaki örnek ten biraz farklı ilgileneneler için. Php kısmıda aşağıdaki gibidir.
      Hala daha güncellenebilir ama bu haliyle bile oldukça iş görür. İyi çalışmalar.

      SELECT y_uye.*,GROUP_CONCAT(cevaplar.adi ORDER BY cevaplar.id ASC SEPERATOR '~' ) AS cevap FROM y_uye 
      INNER JOIN cevaplar ON y_uye.yuyeID = cevaplar.id GROUP BY y_uye.yuyeID
      ORDER BY 'y_uye.yuyeID' ASC
      



      while($sonuc = mysql_fetch_assoc($sorgu)){
      		echo "<tr><td>".$sonuc['yuyeID']."</td>";
      		
      		$cevaplar = explode("~", $sonuc['cevap']);
      		foreach($cevaplar as $cevap){
      			echo "<td>".$cevap."</td>";
      		}
      		echo "</tr>";
      	}
      
      10 yıl önce yazılmış
    • hkor adlı üyenin fotoğrafı hkor
      teşekkürler üstad eline sağlık...
      10 yıl önce yazılmış

Cevaplar

  • siyahbeyaz adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    472 cevap - 20 soru
    sorular ve kullanıcları tablosunu vermemişsin..

    sorular tablosunu su sekilde kaide alırsak

    sorularID | soru


    kullanicilarID | kullanici_adi |


    seklinde oldugunu farz edersek


    select * from ek_tablo E right join kullanicilar K ON E.kullanici_id=K.kullanicilarID RIGHT JOIN sorular S ON E.soru_id=S.sorularID
    
    • hkor adlı üyenin fotoğrafı hkor
      Cevap için teşekkürler soruyu düzgün soramadım sanırım, tekrar yeni görüntü ekledim. 640 kişi her biri 42 anket sorusunu cevapladı bunları 640 satır ve 42 sütun olarak listelemem lazım? yazdığın sorguyu denedim ama tam sonuç alamadım:(
      10 yıl önce yazılmış
    • siyahbeyaz adlı üyenin fotoğrafı siyahbeyaz
      yanı kast ettigin sey..

      42 tane anket sorusu var
      ve 640 tane kullanıcı..

      her bır kullanıcının 42 soruya ne cevap vermek ıstedıgını tek satırda gostermek mi?
      10 yıl önce yazılmış
    • hkor adlı üyenin fotoğrafı hkor
      evet hocam o şekilde her 1 kişi 42 cevap yan yana olacak şekilde 640 satır listeletmek.malesef sonuc alamdım henüz:(
      10 yıl önce yazılmış