【问题标题】:Rails ActiveRecord: Missing column in grouping queryRails ActiveRecord:分组查询中缺少列
【发布时间】:2017-04-26 08:57:07
【问题描述】:
Key.select('products.name as product, product_groups.name as product_group, AVG(keys.cost) as cost')
.group('products.id, product_groups.id')
.left_joins(:product,:product_group)

结果:

=> #<ActiveRecord::Relation [#<Key id: nil, cost: 0.6e1>, #<Key id: nil, cost: 0.4e1>]>

预期返回 3 个字段,但返回值:2 个字段。


I found the solution. The detail areas in the console did not appear as HASH.

【问题讨论】:

  • 每张表中有哪些数据?正在生成什么 SQL? (您可以通过查看日志或在查询末尾添加.to_sql 轻松看到这一点。)
  • 选择 products.name 作为 product,product_groups.name 作为 product_group,AVG(keys.cost) 作为 cost FROM keys LEFT OUTER JOIN products ON products.id = keys.product_id LEFT OUTER JOIN product_groups ON product_groups。 id = keys.product_group_id GROUP BY products.id, product_groups.id
  • ...每个表中有哪些数据? Edit your post 包括所有信息。回答提供Minimal, Complete, and Verifiable example 的问题要容易得多。
  • ProductGroups: id, name Products: id, products_group_id, name Key: id, key, products_group_id, product_id, cost
  • 数据。您的表中有哪些数据?如果不知道 product_groupsproductskeys 表中的 是什么,我无法重现您的问题。再说一遍,所有信息都应该放在in your question,而不是埋在cmets中。

标签: ruby-on-rails ruby activerecord


【解决方案1】:

据我了解,分组语句只会返回聚合列和用于对数据集进行分组的列。在您的情况下,您没有使用选择列表中的分组列,而是使用了其他一些字段。因此,您不会收到其他两列。

【讨论】:

  • 我找到了解决方案。控制台中的详细信息区域未显示为 HASH。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多