gpt4 book ai didi

mysql - 加入 Ruby on Rails

转载 作者:数据小太阳 更新时间:2023-10-29 08:54:09 25 4
gpt4 key购买 nike

我正在为作者生成季度版税报告。我有一个报告模型(没有数据库表支持),我用它来显示基于年份和季度的特定作者的报告。我将其路由到 author/:author_id/:reports/:year/:quarter

但我正在使用这个:

@line_items_totals = LineItem.where(:order_id => @orders, :product_id => @author_products).order("product_id ASC").sum(:quantity, :group => :product_id)

这会返回以产品 ID 作为键以及所有产品行项目在给定时间段内销售的总数量的哈希值,如下所示:

#<Enumerator: {1=>2865, 2=>4068, 4=>50, 5=>60, 9=>22}>

它产生的查询是:

SELECT SUM("line_items"."quantity") AS sum_quantity, product_id AS product_id 
FROM "line_items"
WHERE ("line_items"."order_id" IN (10, 12, 15, 16))
AND ("line_items"."product_id" IN (2, 4, 1, 5, 9))
GROUP BY product_id
ORDER BY product_id ASC

不过,我需要的是产品标题而不是 ID。没有太多运气。我尝试使用 .joins - 但它似乎没有用,因为查询中有 sum 方法。

最佳答案

我会:

ListItem.other_stuff.joins(:product).group(:product_id).select('sum(line_items.quantity) as total_quantity, products.title')

LineItem.other_stuff.group(:product_id).select('sum(quantity) as total_quantity, (select title from products where products.id == product_id) as title)')

然后您可以访问 title 和 total_quantity 作为 LineItem 属性:

item.title
item.total_quantity.to_i

ActiveRecord 或适配器根据选定的列动态定义属性,即使表中没有这样的列。另请注意,出于未知原因,MySQL 适配器使用 String 类型创建此动态属性,而不是您期望的 Fixnum(而 SQLite 适配器使用正确的类型)。所以你必须手动转换它,就像我上面显示的那样。

关于mysql - 加入 Ruby on Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5721671/

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