0
私は、SQLを直接実行することによって、私が望むやり方でクエリを実行していますが、ActiveRecordステートメントで同じことができるのであれば、好奇心が強いですか?この複雑なSQLクエリでは5相当のRails?
私が最も苦労しているのは、このクエリのCOALESCE部分です。これは、LEFT JOINからのNULL値がゼロとしてカウントされ、合計を順番に保持するようにしています。
アイデア?私はPostgresを使用しています。
SELECT Inventories.id, Inventories.name, Inventories.unit_of_measure,
COALESCE(Sum(Stocks.count),0) as totalcount
FROM Inventories
LEFT JOIN Stocks
ON Inventories.id = Stocks.inventory_id
WHERE Inventories.property = 'material' AND Inventories.organization_id = #{current_organization.id}
GROUP BY Inventories.id, Stocks.inventory_id
ORDER BY totalcount ASC
LIMIT(5)")
これはAR相当品に最も近いです。私が和などを追加しようとすると、エラーが発生します。あなたはActiveRecord::QueryMethods#select
を使用することができます
@lowmaterials = current_organization.inventories.materials.left_joins(:stocks).group(:id, :inventory_id).order(count: :asc).limit(5)
恐ろしい、感謝 - それが可能だったので、今、私は何かを学んだ実現しませんでした。 :) – PDD