2014-03-29 124 views
1

我有三个表:评论,用户和评论帮助。访问SQL LEFT JOIN不返回结果

用户可以提交几条评论,这些评论存储在评论表中。

评论帮助有三列:UserID,CommentID和一个“有用的”布尔值。如果每个用户觉得有用,每个用户都可以指出每个评论,这将在CommentsHelpfulness表中创建一个条目。

我想要一个查询,给我所有的评论ID,用提交它的用户的名字,并显示当前登录的用户是否觉得有帮助,没有发现它有帮助,或没有说什么。因此,当前用户没有表达他的意见的评论的ID仍然应该输出,而没有有用的布尔值。

对我来说,这听起来像它应该这样使用左来完成连接:

SELECT Comments.ID, Users.Nom, CommentsHelpfulness.Helpful FROM (Comments INNER JOIN Users ON Comments.UserID = Users.ID) LEFT JOIN CommentsHelpfulness ON (CommentsHelpfulness.CommentID = Comments.ID AND (CommentsHelpfulness.UserID = ?))

不幸的是,这并不输出评论的ID没有在CommentsHelpfulness表中的条目。为什么这不起作用?是因为Access吗?

回答

0

我认为问题是inner join,而不是left join

尝试删除该表:

SELECT c.ID, ch.Helpful 
FROM Comments as c LEFT JOIN 
    CommentsHelpfulness as ch 
    ON ch.CommentID = c.ID AND 
     ch.UserID = ? 
+0

对不起,我试图让查询尽可能短,我的问题,把一些字段的了,我需要。我实际上也需要用户表中的用户名。我编辑了我的问题。 – user3475924

+0

但是你说得对,如果我把INNER JOIN拿出来就行了。我只需要找到一种方法来从Users表中获取我需要的数据。 – user3475924

+0

事实证明,问题只是我添加参数的方式,查询实际上工作正常。谢谢您的帮助! – user3475924

0
select c.id, c.Nom, d.Helpful from (
select a.ID, b.Nom from Comments a left join Users b 
on a.UserID = b.ID) c left join CommentsHelpfulness d 
on d.CommentID = c.ID;