在子查询中使用父值

问题描述 投票:0回答:1

我有一个问题。 如何在子查询选择中使用父属性?

示例

Record A
id: 1
parent_id: 1
name: Test A

Record B
id: 2
parent_id: 1
name: Test B

Record c
id: 3
parent_id: 2
name: Test c

查询结果: [{name: '测试 A', 总计: 2}, {name: '测试 B', 总计: 2}, {name: '测试 C', 总计: 1}]

我有这个疑问

Record.select('(select COUNT(*) from records where records.parent_id = parent_id), name')

但这会获取所有记录的总数,仅当我设置 id 时才有效

Record.select('(select COUNT(*) from records where records.parent_id = 2), name')
ruby-on-rails ruby
1个回答
0
投票

直接在查询本身中写入所需的格式可能很复杂。相反,您可以使用查询检索计数并使用 Ruby 代码格式化结果。

records = Record.group(:parent_id).select("group_concat(name) as names, count(*) as total")
res = []
records.each do |record|
  name_arr = record['names'].split(",")
  res << name_arr.map{|name| {'name' => name, 'total' => record['total']}}
end
return res
© www.soinside.com 2019 - 2024. All rights reserved.