我有2个型号:
Characteristic
name
Value
characteristic_id
name
和值belongs_to
特征,特征has_many
值
我希望有一个查询返回features'names作为键和值,这个特征的相关值的名称:
{characteristic_1_name: [value_associated_1.name, value_associated_2.name], characteristic_2_name: [value_associated_3.name, value_associated_4.name]}
我尝试了许多使用连接的查询,选择,但无法使其正常工作。
如果不使用ruby的方法(地图等很慢),我怎么能得到这个结果。
任何输入都将非常感激
答案 0 :(得分:2)
如果你使用postgresql
ActiveRecord::Base.connection.execute(
WITH characteristics_arr AS
(SELECT characteristics.name AS name,
array_agg(
values.id) AS arr
FROM CHARACTERISTICS
INNER JOIN
VALUES ON characteristics.id =
VALUES.characteristic_id
GROUP BY characteristics.name)
SELECT json_object_agg(name, arr)
FROM characteristics_arr
)