在php中在查询中连接3个表的困难

在php中在查询中连接3个表的困难,php,sql,join,forum,Php,Sql,Join,Forum,我的数据库有3个表,我希望在select查询中访问,但我似乎无法让它工作。从2个表中进行选择很好,所以我知道除了从3个表中进行选择的代码之外,其他一切都正常工作。我的数据库已在PHPmyadmin上创建 各表如下: 论坛的答复 答复: 主题id 用户id 答复(文本) 答复日期 论坛主题 主题id 类别识别码 用户id 题目 主题描述 主题日期 使用者 用户id 用户名 这是我尝试使用的代码,显示了我希望选择的字段: $queryreply = "SELECT forum_replies

我的数据库有3个表,我希望在select查询中访问,但我似乎无法让它工作。从2个表中进行选择很好,所以我知道除了从3个表中进行选择的代码之外,其他一切都正常工作。我的数据库已在PHPmyadmin上创建

各表如下:

论坛的答复

答复: 主题id 用户id 答复(文本) 答复日期 论坛主题

主题id 类别识别码 用户id 题目 主题描述 主题日期 使用者

用户id 用户名 这是我尝试使用的代码,显示了我希望选择的字段:

    $queryreply = "SELECT forum_replies.reply_id, forum_replies.topic_id, forum_replies.user_id,
                       forum_replies.reply_text, forum_replies.reply_date, users.user_id, users.username
                       forum_topics.topic_id,forum_topics.topic_title, forum_topics.topic_date
                       FROM forum_replies
                       JOIN forum_topics
                       ON forum_replies.topic_id = forum_topics.topic_id
                       JOIN users
                       ON forum_replies.user_id = users.user_id

                       ";


        $result = mysql_query($queryreply) or die (mysql_error());
        $row = mysql_fetch_array($result); 
如有代码示例,将不胜感激。谢谢

您错过了,在用户之后。用户名

使用此查询:

SELECT a.reply_text, a.reply_date, b.topic_title, c.username
FROM forum_replies a
LEFT JOIN forum_topics b ON a.topic_id=b.topic_id
LEFT JOIN users c ON a.user_id=c.user_id
// apply WHERE, ORDER, GROUP if needed
除了语法错误之外,在您的案例中还应该使用LEFT JOIN和table alias

要同时显示主题创建者的用户名,您可以将查询调整为以下内容:

SELECT a.reply_text, a.reply_date, b.topic_title, c.username AS reply_user, (SELECT username FROM users WHERE user_id=b.user_id) AS topic_creator
FROM forum_replies a
LEFT JOIN forum_topics b ON a.topic_id=b.topic_id
LEFT JOIN users c ON a.user_id=c.user_id
// apply WHERE, ORDER, GROUP if needed

似乎无法让它工作。。。你期望的结果是什么?另外,停止使用不推荐的mysql_*函数;改用PDO/MySQLi。最后,充分利用表别名。是的,我知道它不推荐使用,但我就读的大学告诉我这样做。我以后不会用了。此时此刻,我正试图呼应$row,以显示对我论坛网站上某个主题的所有回复。用户详细信息显示谁发布了他们,您得到了什么错误?您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解可使用的正确语法。第3行的“.topic_id,forum_topics.topic_title,forum_topics.topic_date FROM forum_”用户之间缺少逗号。username forum_topics.topic_i电子版中出现语法错误,请回复_text谢谢您的帮助,我可以问一下为什么离开join而不是join吗?您可以参考以下内容:。在您的情况下,主题回复是您想要获得的关键信息。如果您使用内部连接,如果主题/用户不知何故丢失,则不会显示回复。谢谢,我现在明白了,我想知道您是否可以帮助我解决我面临的这个新问题。我的论坛页面目前显示了论坛标题和对该特定论坛的所有回复,以及回复者的用户名,但我也试图显示创建论坛标题的人的用户名,但我似乎无法理解。非常感谢,我是一名新手,非常感谢你能容忍我,我真的很感激你。谢谢你的帮助,现在好像还在工作!
SELECT a.reply_text, a.reply_date, b.topic_title, c.username AS reply_user, (SELECT username FROM users WHERE user_id=b.user_id) AS topic_creator
FROM forum_replies a
LEFT JOIN forum_topics b ON a.topic_id=b.topic_id
LEFT JOIN users c ON a.user_id=c.user_id
// apply WHERE, ORDER, GROUP if needed