use*_*963 5 sql activerecord ruby-on-rails
无法将SQL查询转换为ActiveRecord.这是我的域建模的简化版本:
用户#has_many:篮子
篮子#date:date,user_id:integer - 有很多:line_items,belongs_to:user
LineItem#quantity:integer - belongs_to:basket
我可以在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
Run Code Online (Sandbox Code Playgroud)
在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')
Run Code Online (Sandbox Code Playgroud)
它返回篮子日期,但不返回分组的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")
Run Code Online (Sandbox Code Playgroud)
您还可以使用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")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3517 次 |
| 最近记录: |