【问题标题】:Access SQL LEFT JOIN not returning results访问 SQL LEFT JOIN 不返回结果
【发布时间】:2014-03-29 14:41:24
【问题描述】:

我有三个表:Comments、Users 和 CommentsHelpfulness。

用户可以提交多个 cmets,这些 cmets 存储在 Comments 表中。

CommentsHelpfulness 包含三列:UserID、CommentID 和一个“Helpful”布尔值。每个用户都可以指出每条评论是否有用,这将在 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 = ?))

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

【问题讨论】:

    标签: sql ms-access join left-join


    【解决方案1】:

    我认为问题在于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 = ?
    

    【讨论】:

    • 很抱歉,我尽量使查询尽可能简短,并删除了一些我需要的字段。我实际上也需要用户表中的用户名。我编辑了我的问题。
    • 但是你是对的,如果我把 INNER JOIN 拿出来,它就可以工作。我现在只需要找到一种方法来从用户表中获取我需要的数据。
    • 原来问题只是我添加参数的方式,查询实际上工作正常。感谢您的帮助!
    【解决方案2】:
    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      相关资源
      最近更新 更多