2010-12-16 12 views
0

私は過去数日間、MYSQLクエリの問題に取り組んできました。誰かが私を正しい方向に向けることを願っています。クエリの問題 - ディスカッション内でコメントをグループ化しようとしています

私は次のようなレイアウトを返すことを目標に二つのテーブル( '質問' と 'コメント')を照会しています:

質問1

  • コメント1
  • コメント2
  • コメント3

質問2

  • コメント4
  • コメント5

のように...

コメントが問題に固有のものである(すなわち、コメントは親の質問のもとに住んでいる)。

<?php 
    $query = "SELECT discussion.*, comments.* FROM discussion LEFT JOIN comments ON discussion.referenceID = comments.commentID"; 
    $result = mysql_query($query) or die(mysql_error()); 
    while($row = mysql_fetch_array($result)){ 
    echo $row['question']. " - ". $row['comment']. "<br /><br />"; 
} 
?> 

結果: - 1 質問1コメント - コメント2

- 3 質問2コメント

質問1

私のクエリは、(私が間違っている知っている)、このようになります。

私は近いですが、1つの質問の下で複数のコメントを達成することはできません。私は、ユーザーが投稿することができますしようとしている状況でそれを置くために2

コメント -

質問1から1 質問2コメント:私は「discussion.question BY GROUP」を試してみましたが、それはに私の結果を制限しました1つのページに表示される複数の質問に対するコメント。

ありがとうございます。

RR

+0

最終結果はどのように見えますか? –

答えて

1

この試してみてください。ただ、前の質問を保存し、現在と比較

$query = "SELECT * 
FROM discussion, comments 
WHERE discussion.referenceID = comments.commentID 
GROUP BY discussion.referenceID; 
+0

私はSOが好きです - 完全に間違った答えでさえあなたがアップルヴォートを得ることができる場所! ;-) – zerkms

+0

@zerkmsはより良い検索クエリですか? – Bnjmn

+0

あなたの質問は彼の仕事を解決しません。 **すべてのコメント**を取得する必要があり、このクエリはそれらのすべてを返すことはありません。 – zerkms

0

を。

スケッチ:

$prev_question = null; 
while($row = mysql_fetch_array($result)) { 
    if ($prev_question != $row['question']) { 
     echo '<b>' . $row['question'] . '<b><br />'; 
     $prev_question = $row['question']; 
    } 
    echo $row['comment'] . '<br />'; 
} 
+0

ありがとうございます。これをあなたの助けを借りて並べ替えました。 – rrfive

0

Zerkms、華麗!応答していただきありがとうございます。 1つの問題を除いて、完全に動作します。

質問は、コメントが関連付けられている場合にのみ表示されます(ある時点で自分自身を引き起こした問題)。目標は、コメントが割り当てられているかどうかにかかわらず、すべてのコメントを表示することです。コードの作業

:再び

<?php 
$query = "SELECT discussion.*, comments.* FROM discussion LEFT JOIN comments ON discussion.referenceID = comments.commentID"; 
$result = mysql_query($query) or die(mysql_error()); 
while($row = mysql_fetch_array($result)){ 
$prev_question = null; 
while($row = mysql_fetch_array($result)) { 
if ($prev_question != $row['question']) { 
echo "<h3>" . $row['question'] . "</h3>"; 
$prev_question = $row['question']; 
} 
echo "<img src=\"images/bg_addform_topFull.gif\" width=\"446\" height=\"11\" /><div class=\"comment\"><h3>" . $row['author'] . "</h3><div class=\"greyText\">" . $row['dt'] . "</div><p>" . $row['comment'] . "</p></div><img src=\"images/bg_addform_bottom.gif\" width=\"446\" height=\"11\" class=\"footerImage\" />"; 
     } 
     } 
    ?> 

を、助けてくれてありがとう。

+0

あなたのコメントが回答に値する場合はそのコメントを考えてください - それから緑色のチェックサインでチェックしてください。それはstackoverflowの仕組みです;-) – zerkms

関連する問題