1

私は非常に厄介な問題に悩まされています。私のウェブサイトには、ブログのように簡単な投稿とコメントのセクションがあります。つまり、「投稿」と「コメント」の2つのテーブルがあります。

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

とてもシンプルです。idpost_cmt->投稿テーブルへの外部キー

コメントテーブルの最後のフィールド、つまり「idcomment_cmt」は、誰かが既存のコメントにコメントを送信した場合に使用されます。

役職

|_コメント1

|_コメント2

|_コメント3

|_コメント4

_ _ |_コメント4.1

_ _ |_コメント4.2

|_コメント5。。。すぐ ...

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

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

どうもありがとう...

4

1 に答える 1

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 
于 2011-03-16T08:04:45.063 に答える