Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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
Mysql 按子模型属性的乘积之和分组_Mysql_Ruby On Rails_Scope - Fatal编程技术网

Mysql 按子模型属性的乘积之和分组

Mysql 按子模型属性的乘积之和分组,mysql,ruby-on-rails,scope,Mysql,Ruby On Rails,Scope,我需要查找其items.quantity*items.value\u net的乘积之和大于某个值的文档 我试过范围: Document has_many :items Item belongs_to :document 但这是错误的。我一定错过了一些明显的东西。您正在寻找的具有(未测试): 像魅力一样工作,+1并接受(10秒的差异,但仍然是第一个回答)非常感谢!投了赞成票,但必须接受@BroiState的回答,-他是“第一”:D scope :items_value_net_gteq, la

我需要查找其
items.quantity*items.value\u net
的乘积之和大于某个值的文档

我试过范围:

Document has_many :items

Item belongs_to :document

但这是错误的。我一定错过了一些明显的东西。

您正在寻找的
具有
(未测试):


像魅力一样工作,+1并接受(10秒的差异,但仍然是第一个回答)非常感谢!投了赞成票,但必须接受@BroiState的回答,-他是“第一”:D
scope :items_value_net_gteq, lambda { |value|
  joins(:items)
    .where('SUM(items.quantity * items.price_net) >= ?', value)
}
scope :items_value_net_gteq, ->(value) {
  joins(:items).group('documents.id').
    having('SUM(items.quantity * items.price_net) >= ?', value)
}
scope :items_value_net_gteq, lambda do |value|
  joins(:items).group("items.document_id")
         .having('SUM(items.quantity * items.price_net) >= ?', value)
end