0

このような投稿が他にもあることを知っているので、それらを使用しています。私は3つのテーブルを持っています:

users_info
  user_id | user_name

blog_comments
  comment_id | comment

blog_reply
  user_id | comment_id | reply | reply_date

テーブルに参加して、user_name から users_info を取得し、blog_comments.comment_id で blog_reply を返そうとしています。

私が使ってきたもの: コメントとコメント返信用の mysql 構造

私はテーブルの結合に行き詰まっています。どんな助けも大歓迎です。

    $get_replies = ("SELECT
                      blog_reply.user_id,
                      blog_reply.comment_id,
                      blog_reply.reply,
                      blog_reply.reply_date,
                      users_info.user_name AS user_name
                    FROM blog_reply
                    JOIN users_info ON blog_reply.user_id = users_info.user_id
                    LEFT JOIN blog_comments ON blog_reply.comment_id = blog_reply.comment_id
                    JOIN users_info ON blog_reply.user_id = users_info.user_id
                    WHERE blog_comments.comment_id = '{$comment_id}'
                    ORDER BY blog_reply.reply_date DESC");

    $reply = mysql_query($get_replies);
4

2 に答える 2

1

いくつかのMySQLのこと:

  1. テーブルが必要ない場合は、参加しないでください。blog_comments テーブルからのデータは必要ないため、クエリに含めないでください。blog_reply テーブルには comment_id があるため、そのテーブルをそのまま使用できます

  2. users_info.user_name AS user_name を実行する必要はありません。それは冗長です。

  3. 結合に where 句を追加できます。

MySQL ステートメントの書き方は次のとおりです。

SELECT
    blog_reply.user_id,
    blog_reply.comment_id,
    blog_reply.reply,
    blog_reply.reply_date,
    users_info.user_name
FROM 
    blog_reply
JOIN 
    users_info 
ON 
    blog_reply.user_id = users_info.user_id AND
    blog_reply.comment_id = '{$comment_id}'
ORDER BY 
    blog_reply.reply_date DESC

それが役立つことを願っています!

于 2013-03-22T21:06:48.300 に答える
0

これはうまくいくはずです:

FROM blog_reply
JOIN users_info ON blog_reply.user_id = users_info.user_id
JOIN blog_comments ON blog_reply.comment_id = blog_comments.comment_id
WHERE blog_comments.comment_id = '{$comment_id}'
于 2013-03-22T21:06:40.163 に答える