1

Railsを使用しているため、Railsで使用することはめったにないため、SQLで錆びてきました。私は2つの関連するテーブルを持っています:コメント1:mcomment_views

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にレコードがない場合は、コメントは返されません。

4

2 に答える 2

2

レコードがない場合はnullをチェックできます...

where comment_views.viewed != "t" or comments_views.viewed is null
于 2010-09-30T21:10:53.747 に答える
0

コメントのカップル:

  1. where句で左結合テーブル(comment_views)の列を参照するとすぐに、結合が内部結合であるかのように動作するように強制します。代わりに、これらの条件を結合に設定してください。

  2. なぜgroupbyをしているのかわからない。必要ないと思います。

したがって、コードは次のようになります。

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
于 2010-09-30T21:12:42.227 に答える