2017-01-04 5 views
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) 

答えて

0

your_relation.select("column1, column2, COALESCE(1,2) AS column3").left_joins... 
+0

恐ろしい、感謝 - それが可能だったので、今、私は何かを学んだ実現しませんでした。 :) – PDD