отображать количество запросов (DISTINCT review.id) как my_count, даже если результат подсчета равен 0

В приведенном ниже запросе rails подсчитывает, сколько отзывов и комментариев имеет публикация, и упорядочивает результаты в порядке DESC.

Например:

публикация 1: 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")

person vitdes    schedule 31.10.2013    source источник


Ответы (1)


Вам нужно сделать левое соединение с таблицами обзоров и, возможно, публикаций_комментариев. Пожалуйста, попробуйте это:

@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")
person alexius    schedule 31.10.2013