我可以使用连接查询来执行此操作吗?

时间:2013-05-23 02:25:15

标签: mysql sql join

我不得不承认试图理解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”列不明确

1 个答案:

答案 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
相关问题