1

我不得不承认试图理解 JOIN 会让我的大脑爆炸,所以我需要一些帮助。

我想要完成的是返回论坛中最后 25 个帖子的信息,但主帖子表只返回主题和论坛的数字,而我需要主题和论坛的文本名称,我可以从中检索另外两张桌子。在我对连接的非常有限的理解中,似乎我可以在一个查询中使用一个来完成所有这些,而不是使用循环和其他可能不需要的代码编写 3+ 个查询。

这将是主要查询:

SELECT post_id, topic_id, forum_id, post_time
  FROM posts
  ORDER BY post_id DESC
  LIMIT 25

但是对于 25 个结果中的每一个,我还希望包含来自表forumsforum_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' 不明确

4

1 回答 1

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
于 2013-05-23T02:28:31.710 回答