2017-07-27 9 views
0

3つのモデルのデータを組み合わせたActiveRecordクエリを作成しようとしています。 MachineGroupsには多くのMachinesがあり、多くはOutputsを持つことができます。 すべて特定の時間範囲内の出力を持つ特定のマシングループのマシンを選択するクエリーが必要です。これは、マシンが所定の時間範囲内にゼロ出力を持つ場合、リストに含めるべきで出力がないことを意味しますデータ。ARクエリでネストされたSQL SELECT

SQLコード:

SELECT * FROM machines LEFT OUTER JOIN 
(SELECT * FROM outputs 
WHERE outputs.created_at >= "2017-07-25 05:00:00" 
AND outputs.created_at < "2017-07-26 17:00:00") AS o 
ON machines.id = o.machine_id 
WHERE machines.machine_group_id = 1; 

答えて

1

SELECT m.* 
FROM machines m 
LEFT OUTER JOIN outputs o ON m.id = o.machine_id 
    AND o.created_at >= '2017-07-25 05:00:00' 
    AND o.created_at < '2017-07-26 17:00:00' 
WHERE m.machine_group_id = 1 ; 
+0

おかげで、このリファクタリングの作品やサブクエリSELECT文を排除のようなものであるべき。 – adass

関連する問題