2011-03-16 14 views
1

非常に厄介な問題に悩まされています。私は単純な投稿とコメントのセクションをブログのように2つのテーブル "投稿"と "コメント":単一MySQLクエリのPOST_COMMENTS

投稿 - > idpost、タイトル、テキスト、日付 コメント - > idcomment、idpost_cmt、電子メール、メッセージ、idcomment_cmt

非常に簡単です。 | _コメント1

ポスト

: - idpost_cmt誰かがすでに既存のコメントにコメントを送信する場合>外部キーがポストにテーブルが

コメントテーブルすなわちの最後のフィールド、「idcomment_cmt」に使用されます

| _コメント2

| _コメント3

| _コメント4

_ _ | _コメント4.1

_ _ |コメント5 _ | _ 4.2

コメント。 。 。 など...

ここで私が正確に望むのは、単一のmysqlクエリのすべての投稿とコメントを照会することです。私が今やっていることは、まずすべての投稿を取得してから各投稿をループすることです。各サイクルで、私は現在の投稿IDを使用してコメントに照会します。コメントをループし、各コメントサイクルで、現在のCommentIDを使用してサブコメントをクエリします。

このように、単一のページ要求では、500以上のSQLクエリが必要になる可能性があります。これはデータベースサーバーには多すぎます。 誰かがこれを達成する方法を手伝ってくれたら、本当に感謝します。

ありがとうございました...

+0

リレーショナルデータベースで階層データについては、これを読む:http://stackoverflow.com/questions/4048151/what-are-the-options-for-storing-hierarchical-data-in-a-relational-database 。 **隣接関係リスト**モデルを使用しています。 –

答えて

0

2つのクエリを実行する必要があります。

  1. は、サブコメントを含むすべての投稿すべてのコメントを取得するために、すべての記事
  2. を取得する
あなたはより似

何かをidpost_cmtを使用してグループにコメントを入れることができ

SELECT idpost, 
     title, 
     TEXT, 
     DATE 
FROM posts 
ORDER BY DATE DESC 
LIMIT 30 

2番目のクエリは次のようになります。

SELECT idcomment, 
     idpost_cmt, 
     email, 
     message, 
     idcomment_cmt 
FROM comments 
     JOIN posts 
     ON posts.idpost = comments.idpost_cmt 
WHERE posts.idpost IN (1, 2, 3, 4) 
ORDER BY idpost_cmt, 
      idcomment_cmt, 
      idcomment DESC 
+0

ありがとうございました...私はこれを試してみるつもりです。 –

+0

こんにちは、ありがとう...それは私のために働いた! –

+0

このフォーラムで回答を受け入れる方法を学ぶ必要があります。あなたがマークすることができる小切手(ダニ)を投票するには、以下の答えの左側にあるをご覧ください。そうしてください。 – Pentium10

関連する問題