2010-09-30 97 views
1

,因为我使用的轨道,我变得生疏的SQL,因为我很少在轨使用。 我有两个相关的表格: 评论1:m comment_viewsSQL左加入其中轨道

我想查找其中comment_views.viewed为false的所有评论。问题是,对于一些评论,comment_views中没有相关记录。

到目前为止,我有

select comments.id 
    from comments 
     left join comment_views 
      on comments.id = comment_views.comment_id 
    where comment_views.viewed != "t" 
    group by type_id, object_id 
    order by comments.created_at desc 

但作为规定,当存在comment_views没有记录不返回意见。

回答

2

您可以检查null如果没有记录......

where comment_views.viewed != "t" or comments_views.viewed is null 
0

一对夫妇的意见:

  1. 只要您从您的左连接表引用列(在where子句中,你迫使连接充当内部连接。将这些条件放在连接上。

  2. 不知道为什么你正在做的组。我不认为这是必要的。

所以,代码应该是:

select comments.id 
    from comments 
     left join comment_views 
      on comments.id = comment_views.comment_id 
       and comment_views.viewed != "t" 
    order by comments.created_at desc 
+0

的是,其原因确实是不相关的组...我想我应该有刚离开它关闭这个例子 – tybro0103 2010-10-01 16:05:08