【发布时间】:2013-05-18 06:23:40
【问题描述】:
我不得不承认,试图理解 JOIN 会让我的大脑爆炸,所以我需要一些帮助。
我想要完成的是返回论坛中最近 25 个帖子的信息,但主帖子表只返回主题和论坛的数字,而我需要主题和论坛的文本名称,我可以从另外两个表中检索。在我对连接的非常有限的理解中,似乎我可以在一个查询中使用一个来完成所有这些操作,而不是使用循环和其他可能不需要的代码编写 3 个以上的查询。
这将是主要查询:
SELECT post_id, topic_id, forum_id, post_time
FROM posts
ORDER BY post_id DESC
LIMIT 25
但是对于 25 个结果中的每一个,我还希望包含来自表 forums 的 forum_title,其中该表中的 forum_id 与 forum_id 匹配 来自主查询结果,以及表 topics 中的 topic_title,其中该表中的 topic_id 与 topic_id 匹配 在主查询结果中。
我什至希望看到这将有助于我理解 JOIN 的工作原理。
谢谢
编辑:我意识到我应该使用确切的列名和表名,这样我就不会编辑建议了。使用确切的名称,这就是阿奎那的建议的样子:
SELECT post_id, topic_id, forum_id, post_time, Forum_Title, Topic_Title
FROM phpbb3_posts
INNER JOIN phpbb3_topics
on phpbb3_topics.topic_id = phpbb3_posts.topic_id
INNER JOIN phpbb3_forums
on phpbb3_forums.forum_id = phpbb3_posts.forum_id
ORDER BY post_id DESC
LIMIT 25
但我得到这个错误(这是在 mysql 中) 1052 - 字段列表中的列 'topic_id' 不明确
【问题讨论】: