2 つのオプションを使用してクエリを作成する必要があります。1 つ目は DISTINCT ON を選択し、2 つ目は並べ替え (および他のフィールドによる並べ替え) です。ところで、うまくいかない
あるSQLフォーラムで解決策を見つけました
WITH d AS (
SELECT DISTINCT ON ({Dlist}) {slist}
FROM {flist}
....
)
SELECT * FROM d ORDER BY {order fields}
では、ActiveRecord メソッドを介してこれを作成し、ActiveRecord::Relation を取得する方法
私の完全なクエリは次のようになります。
WITH d AS (
SELECT DISTINCT ON(item_info_id, volume) items.item_info_id, items.volume, items.*
FROM "items" INNER JOIN "item_info" ON "item_info"."id" = "items"."item_info_id" WHERE "items"."type" IN ('Product')
AND "items"."published" = 't'
AND ("items"."item_info_id" IS NOT NULL)
AND ("items"."price" BETWEEN 2 AND 823489)\
)
SELECT * FROM d ORDER_BY 'price'