我不得不承认试图理解JOIN会让我的大脑爆炸,所以我需要一些帮助。
我想要完成的是返回论坛中最近25个帖子的信息,但主帖子表只返回主题和论坛的数字,而我需要主题和论坛的文字名称,我可以从其他两个表中检索。在我对连接的非常有限的理解中,我似乎可以使用一个在一个查询中完成所有这些,而不是用循环和其他可能不需要的代码编写3个以上的查询。
这将是主要的查询:
SELECT post_id, topic_id, forum_id, post_time
FROM posts
ORDER BY post_id DESC
LIMIT 25
但是对于25个结果中的每一个,我还希望在表论坛中包含 forum_title ,其中 forum_id 与该表匹配 forum_id 来自主要查询结果,以及表主题中的 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”列不明确
答案 0 :(得分:1)
SELECT post_id, topic_id, forum_id, post_time, Forum_Title, Topic_Title FROM posts
INNER JOIN topics on topics.topic_id = posts.topic_id
INNER JOIN forums on forums.forum_id = posts.forum_id
ORDER BY id DESC LIMIT 25