Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何加入产品及其特性_Sql_Ruby On Rails_Postgresql_Activerecord_Orm - Fatal编程技术网

Sql 如何加入产品及其特性

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

如何加入产品及其特性

我有两张桌子。 产品id、标题、价格、创建时间、更新时间等 和 ProductCharacteristicid、product\u id、销售数量、日期、登记日期、更新日期等

我应该显示products表标题是product.id、product.title、product.price、某段时间内的销售数量,并按标题中的任何字段排序

我不会写查询

现在我有以下问题

 > 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