gpt4 book ai didi

sql - 选择 activerecord 中分组行的总和

转载 作者:行者123 更新时间:2023-12-02 01:50:05 25 4
gpt4 key购买 nike

将 SQL 查询转换为 ActiveRecord 时遇到问题。这是我的域建模的简化版本:

用户# has_many :baskets

篮子 # date:date, user_id:integer - 有许多 :line_items, 属于 :user

LineItem # 数量:整数 - 属于:篮子

我可以在 SQL 中执行以下查询:

SELECT baskets.date, SUM(line_items.quantity) from baskets
INNER JOIN line_items ON line_items.basket_id = basket.id
WHERE baskets.user_id = 2
GROUP BY baskets.id
ORDER BY baskets.date DESC

在 PGAdmin 中运行此查询时,我得到了所需的两列:购物篮日期以及与该特定购物篮关联的所有 line_item 数量的总和。

但是,当我尝试为相同数据编写 activerecord 查询时:

User.find(2).baskets
.select('baskets.date,'SUM(line_items.quantity)')
.joins(:line_items)
.group('baskets.id')
.order('baskets.date desc')

它返 repo 物篮日期,但不返回分组的 line_item 数量的总和。理想情况下,我想要以下格式的结果,例如 { date=>quantity, date=>quantity ... },但不知道如何实现。

最佳答案

单引号把你搞乱了,这应该可行

User.find(2).baskets
.joins(:line_items)
.group('baskets.id')
.order('baskets.date desc')
.select("baskets.date, sum(line_items.quantity) as quantity_sum")

您还可以使用 pluck 它将返回日期和总和的数组

User.find(2).baskets
.joins(:line_items)
.group('baskets.id')
.order('baskets.date desc')
.pluck("baskets.date, sum(line_items.quantity) as quantity_sum")

关于sql - 选择 activerecord 中分组行的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42034201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com