首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Rails Group By查询中忽略Order By

在Rails Group By查询中忽略Order By
EN

Stack Overflow用户
提问于 2013-01-19 01:48:44
回答 1查看 512关注 0票数 2

我所要做的就是根据过去7天内的印象数来排序帖子(当有人查看帖子时会产生印象)。这是我的命名作用域

代码语言:javascript
复制
scope :popular_last_week, unscoped
    .select("websites.*, COUNT(impressions.id) AS counted_impressions")
    .joins("INNER JOIN impressions ON websites.id = impressions.impressionable_id")
    .where("impressions.created_at >= ?", 7.days.ago)
    .where(:is_published => true)
    .group("websites.id")
    .order("counted_impressions DESC")

(counted_impressions用于避免post记录冲突)

然而,这会产生以下无效的SQL (counted_impressions不是有效列):

SELECT COUNT(*) AS count_all, websites.id AS websites_id FROM "websites" INNER JOIN impressions ON websites.id = impressions.impressionable_id WHERE "websites"."is_published" = 't' AND (impressions.created_at >= '2013-01-11 17:48:03.954542') GROUP BY websites.id ORDER BY counted_impressions

似乎select语句被忽略了。我在哪里出错了,或者我应该怎么做,以便SQL语句是:

SELECT websites.*, COUNT(impressions.id) AS counted_impressions FROM "websites" INNER JOIN impressions ON websites.id = impressions.impressionable_id WHERE "websites"."is_published" = 't' AND (impressions.created_at >= '2013-01-11 17:42:57.771777') GROUP BY websites.id ORDER BY counted_impressions DESC

EN

回答 1

Stack Overflow用户

发布于 2013-01-19 10:41:00

查询看起来应该是:

代码语言:javascript
复制
SELECT count(*) AS impression_count, w.id AS website_id 
FROM websites as w
INNER JOIN impressions as i ON w.id = i.impressionable_id 
WHERE w.is_published = 't' AND i.created_at >= '2013-01-11 17:48:03.954542'
GROUP BY w.id 
ORDER BY impression_count DESC;

似乎你可以跳过这个查询中的连接,然后在下一个查询上运行"is_published“检查,以获得实际的post数据……假设您只使用这个查询来获取获取数据的第二个查询的ID列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14404648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档