【发布时间】:2015-01-13 20:47:38
【问题描述】:
我有 4 张桌子:
comment (CommentID, StoryID, UserID, CommentContent),
vote (VoteID, UserID, AnswerID),
answer (AnswerID, StoryID, AnswerContent),
user (UserID, Username)
所以我想获取故事 8 的所有 cmets 以及制作这些 cmets 的用户的信息(包括他们的投票信息)。并非所有制作 cmets 的用户都会投票。所以这是我的查询,但它不起作用
SELECT * FROM comment a
LEFT JOIN vote b ON a.UserID = b.UserID
JOIN answer c ON b.AnswerID = c.AnswerID
JOIN user d ON a.UserId = d.UserID
GROUP BY a.CommentID HAVING a.StoryID = 8
我不知道为什么这个查询会显示不投票的评论者的投票结果。你能帮我修一下吗?非常感谢。
【问题讨论】:
-
“没有工作”不是一个非常具有描述性的。查询是否返回错误?返回意外结果?你期待什么结果?该查询将针对每个 CommentId 返回一行,因为
GROUP BY CommentId子句会将所有投票、答案和用户行“折叠”成仅针对给定CommentId返回的一行。从这些表中为列返回的值将来自组中的某行,但哪一行是不确定的。 -
感谢您的回复。一位没有投票的评论员显示了他的投票结果。他的投票结果应该是空的,因为他没有投票。
标签: mysql join outer-join