【问题标题】:Can I use a join query to do this?我可以使用连接查询来执行此操作吗?
【发布时间】: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' 不明确

【问题讨论】:

    标签: mysql sql join


    【解决方案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
    

    【讨论】:

    • 对不起,我应该使用我打算使用的确切字段和表名称,我已经更新了我的主要帖子。
    • 看起来我所要做的就是在主选择中指定 phpbb3_posts.topic_id 和 phpbb3_posts.forum_id 。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 2016-03-11
    • 2011-09-27
    • 2010-10-29
    • 1970-01-01
    • 2022-10-13
    • 2013-08-31
    相关资源
    最近更新 更多