0

我知道还有其他类似的帖子,我一直在使用它们。我有三张桌子:

users_info
  user_id | user_name

blog_comments
  comment_id | comment

blog_reply
  user_id | comment_id | reply | reply_date

我正在尝试加入表格以从 users_info 获取 user_name 并通过 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 回答