Sql 如何加入产品及其特性
如何加入产品及其特性 我有两张桌子。 产品id、标题、价格、创建时间、更新时间等 和 ProductCharacteristicid、product\u id、销售数量、日期、登记日期、更新日期等 我应该显示products表标题是product.id、product.title、product.price、某段时间内的销售数量,并按标题中的任何字段排序 我不会写查询 现在我有以下问题Sql 如何加入产品及其特性,sql,ruby-on-rails,postgresql,activerecord,orm,Sql,Ruby On Rails,Postgresql,Activerecord,Orm,如何加入产品及其特性 我有两张桌子。 产品id、标题、价格、创建时间、更新时间等 和 ProductCharacteristicid、product\u id、销售数量、日期、登记日期、更新日期等 我应该显示products表标题是product.id、product.title、product.price、某段时间内的销售数量,并按标题中的任何字段排序 我不会写查询 现在我有以下问题 > current_project.products.includes(:product_charac
> current_project.products.includes(:product_characteristics).group('products.id').pluck(:title, 'SUM(product_characteristics.sold_quantity) AS sold_quantity')
(45.4ms) SELECT "products"."title", SUM(product_characteristics.sold_quantity) AS sold_quantity FROM "products" LEFT OUTER JOIN "product_characteristics" ON "product_characteristics"."product_id" = "products"."id" WHERE "products"."project_id" = $1 GROUP BY products.id [["project_id", 20]]
请帮助我通过ormto编写查询,以添加带有日期和顺序的位置,或编写原始sql查询
我用了勇气。它返回数组数组,而不是哈希数组。当然不太好
product_characteristics.date字段在范围product_id中是唯一的。但请给出两个有此条件的示例和没有此条件的示例,以满足我的好奇心
我使用postgresql和rails 4.2.x
顺便说一下,ProductCharacteristic表的记录量将超过一百万条。我应该使用postgresql表分区吗。它能提高性能吗
谢谢。在这种情况下,您可以使用select而不是count,该属性将作为product.SALLED\U QUOTE访问 查询变为
products = current_project.products.joins(:product_characteristics).group('products.id').select(:title, 'SUM(product_characteristics.sold_quantity) AS sold_quantity')
products.first.salled_quantity=>作品
要订购,只需添加一个order子句即可
products = products.order(id: :asc)
或
比如说
在哪里
products = products.where("created_at > ?", 2.days.ago)
比如说
您可以在第一行之后链接sql子句,这无关紧要,因为只有在实际使用检索集时才会启动查询。
所以你也可以做一些事情,比如
if params[:foo]
products = products.order(:id)
end
不可以。我不能使用select>current\u project.products.includes:product\u characteristics.group'products.id'。选择:标题,“SUMproduct\u characteristics.Sald\u quantity AS Sald\u quantity”PG::UndefinedTable:错误:表product\u characteristics第1行的子句条目中缺少:选择products.title,SUMproduct\u特性。已售出\u…^:选择products.title,SUMproduct\u characteristics.Sald\u quantity作为products中的Sald\u quantity,其中products.project\u id=$1 GROUP BY products.id=>哦,是的,尝试使用联接而不是IncludeOK,我使用带有左外部联接的联接,但如何按Sald\u quantity订购?哦,对不起,我使用了SYMBOLOrderSeld\u quantity::desc,它只适用于字符串。可以非常感谢你。我应该用精选而不是拔毛,一切都会好的。在询问之前我尝试过使用它,但它返回的结果类似于[,,我认为我可以得到销售数量。所以我在这里询问。
if params[:foo]
products = products.order(:id)
end