【问题标题】:math plus operator in query. summing up .select specified count variables查询中的数学加运算符。总结 .select 指定的计数变量
【发布时间】:2023-03-05 11:26:01
【问题描述】:

我一直在尝试添加另一个连接表,如 rails 指南中所示(例如,publication_cmets)。然后我在指定的列上调用 select 来计数,可能到目前为止它正在工作。

这样做的想法是加上reviews_count 和pub_count = SUM。但是我遇到了一个问题,如何在查询 reviews_count 和 pub_count 中加上 order: "SUM DESC"。

有可能像我想的那样做吗?以及如何?

到目前为止,我有这个代码:

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

【问题讨论】:

  • 你使用什么数据库?这将取决于 sql 命令。
  • 我使用 SQLite3。任何解决方案表示赞赏。
  • 你会在生产中使用 sqlite 吗?您了解 SQLite 和 Postgres 之间的 sql 函数可能不同吗?
  • 如果我在 postgres 中尝试 SELECT col1 + col2 FROM "some_table"; 效果很好,所以我想在 sqlite 中也可以。问题是你是否可以把它放在 order 子句中。如果不是,您可以始终按reviews_count, pub_count 订购,因为这实际上应该与按总和订购相同。
  • 在@MichaelSzyndel 所说的基础上,尝试将count("reviews".id) as reviews_count, count("publication_comments".id) as pub_count 替换为count("reviews".id) + count("publication_comments".id) as my_count 并执行.order("my_count DESC")

标签: sql ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:
@publication = Publication.joins(:reviews, :publication_comments)
    .select('"publications".*, count("reviews".id) + count("publication_comments".id) as my_count')
    .group('"publications".id')
    .order("my_count DESC")

【讨论】:

    猜你喜欢
    • 2021-09-16
    • 1970-01-01
    • 2010-10-19
    • 2015-02-04
    • 2018-09-26
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多