Bir sql sorgusu sadece mesajları ve açıklamaları yazdırmak için nasıl

6 Cevap php

Bu bir sql sorgusu ile tüm blog yazıları + ilişkili yorumlar (PHP) yazdırmak mümkün mü?

Eğer öyleyse, nasıl?

Ben bu yönde düşünüyordum:

SELECT p.post_id, p.title, c.comment_body
FROM posts p
LEFT JOIN comments c
ON c.parent_id = p.post_id

Beklediğim gibi ama bu işe yaramadı

6 Cevap

Using one SQL query is not very convenient, since you have 1 post and multiple comments.
Having the post details added to each comment (in a combined query) is a waste of resources.

Bu mesaja bilgi almak ve mesaja ait yorum bulmak için post_id yazının kullanmak çok daha uygun olur.

Aklıma en kolay yolu tuşları sonrası kimlikleri bir ilişkisel diziye döndü ve grup hepsini satırları arasında yineleme etmektir. Sonra bu ilişkisel dizi yineleme ve gruptaki ilk satırdan sonrası unvanını alarak, her yazı için yorum yazdırabilirsiniz.

When getting data just use the field name like: $result = mysql_query("SELECT p.post_id, p.title, c.comment_body FROM posts p LEFT JOIN comments c ON c.parent_id = p.post_id");

while($row = mysql_fetch_array($result))
  {
  echo $row['title'] . " " . $row['comment_body'];
  echo "<br />";
  }

Gönderen: http://www.tizag.com/mysqlTutorial/mysqljoins.php

: Eğer MySQL kullanıyorsanız eğer GROUP_CONCAT işlevini kullanabilirsiniz

SELECT p.post_id, p.title, GROUP_CONCAT(c.comment_body)
FROM posts
LEFT JOIN comments c ON c.parent_id = p.post_id
GROUP BY p.post_id

MySQL için:

SELECT p.post_id, p.title, GROUP_CONCAT(c.comment_body), count(*) as coment_cnt
FROM
    posts p
        LEFT JOIN comments c ON (p.post_id = c.parent_id)
GROUP BY
    p.post_id

"Beklediğim gibi Ama bu işe yaramadı"

... Ama sen umdun söyleme.

Sorgunuza ima şema doğru olduğunu varsayarsak, o zaman onun bir sadece hayır beyin mesajları kez gösterilir:

$lastpostid=false;
while ($r=mysql_fetch_assoc($result)) {
  if ($r['post_id']!=$lastpost) {
     print "Post: " . $r['title'] . "<br />\n";
     $comment_id=1;
     $lastpost=$r['post_id'];
  }
  print "Comment # $comment_id : " . $r['comment_body'] . "<br />\n";
  $comment_id++;
}

Ama bu sorgu (yorum hiyerarşik olmadığını yani) doğru olduğunu ima dedi.

C.