【发布时间】: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