我的数据库有 3 个表,我希望在选择查询中访问,但我似乎无法让它工作。从 2 个表中进行选择效果很好,所以我知道除了从 3 个表中进行选择的代码之外,其他一切都正常工作。我的数据库已在 PHPmyadmin 上创建
表格如下:
论坛回复
- reply_id
- topic_id
- user_id
- 回复文本
- 回复日期
论坛主题
- topic_id
- 类别_id
- user_id
- 主题标题
- 主题_描述
- 主题日期
users
这是我尝试使用的代码,显示了我希望选择的字段:
$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
和您的情况下的表别名。
要同时显示主题创建者的用户名,您可以将查询调整为以下内容:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)