即使计数结果为0,也将查询计数(DISTINCT“review”.id)渲染为my_count

时间:2013-10-31 14:02:31

标签: ruby-on-rails ruby ruby-on-rails-3 controller rails-postgresql

在下面的查询中,rails会计算已发布的评论和评论的数量,并按DESC顺序排序。

例如:

出版物一:2评论+10评论= 12(my_count)

出版物二:2评论+5评论= 7(my_count)

如果上述查询可以按预期查找和呈现发布,但是如果:

出版物三: 0 评论+5条评论= 5条(my_count)

在这种情况下,查询不会渲染发布三,因为复审值为0.即使一个或两个值为0,我怎么能使它渲染?所以,基本上我想要以DESC顺序渲染所有记录,无论值是否为0。

感谢您的指导!

@publication = Publication.joins(:reviews, :publication_comments)
                          .select('"publications".*, count(DISTINCT "reviews".id) + count(DISTINCT "publication_comments".id) as my_count')
                          .group('"publications".id')
                          .order("my_count DESC")

1 个答案:

答案 0 :(得分:1)

您需要与评论以及publications_comments表进行左联接。请试试这个:

@publication = Publication.includes(:reviews, :publication_comments)
                      .select('"publications".*, count(DISTINCT "reviews".id) + count(DISTINCT "publication_comments".id) as my_count')
                      .group('"publications".id')
                      .order("my_count DESC")