【问题标题】:Getting data from three tables using join mysql使用join mysql从三个表中获取数据
【发布时间】:2016-05-13 09:00:47
【问题描述】:

我的数据库中有三个表

1.用户(id,用户名)

2.Stories(id,user_id,content) 这里user_id是外键引用Usersid

3.Comments (id,user_id,story_id,comment) 这里user_id是外来键是指Usersidstory_id是外来键是指Storiesid

我需要从 Stories 表中获取故事列表,其中包含该帖子上的 cmets 总数和故事作者的用户名

这是我的查询

SELECT stories.id,stories.content,COUNT(stories.id) as totalcomment
FROM stories
 JOIN comments
ON stories.id=comments.story_id GROUP BY stories.id

我会得到每个帖子的总评论,但无法获取故事作者的用户名(即用户表中的用户名)

【问题讨论】:

  • 是什么阻止您加入Users 表?
  • 同理,你加入了cmets
  • 您是否维护了 users 表与 cmets 或 stories 的关系?
  • 是的,我用两张表维护

标签: php mysql


【解决方案1】:
SELECT s.id,s.content,COUNT(c.story_id) as totalcomment, u.username
FROM stories s LEFT JOIN comments c ON (s.id=c.story_id)
LEFT JOIN users u ON (s.user_id = u.id)
GROUP BY s.id

【讨论】:

    【解决方案2】:

    试试这个:

    SELECT stories.id,stories.content,COUNT(stories.id) as totalcomment, Users.username
    FROM stories, Users, comments
    WHERE stories.id=comments.story_id
    AND stories.user_id = Users.id
    GROUP BY stories.id
    

    或加入:

    SELECT stories.id,stories.content,COUNT(stories.id) as totalcomment, Users.username
    FROM stories
    JOIN comments ON stories.id=comments.story_id
    JOIN users ON stories.user_id = Users.id
    GROUP BY stories.id
    

    希望这行得通。

    【讨论】:

    • 我会收到错误信息 unknown column but ccolumn is present\
    • 这将返回一个不确定的结果。
    猜你喜欢
    • 2020-09-01
    • 1970-01-01
    • 2022-08-11
    • 2018-06-04
    • 1970-01-01
    • 2013-12-17
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多