私のデータベースには、次のテーブルと関係があります。
検査
--has_many--<
サンプル--has_many--<
結果
1 つ以上の結果が関連付けられている場合、サンプルは「分析済み」と見なされます。すべてのサンプルが分析された場合、検査は「完了」と見なされます。「不完全な」インスペクションをすべて見つける必要があります。つまり、分析されていないサンプルが少なくとも 1 つあるすべての検査です。
mysqlデータベースでこれを行うための私のクエリは
SELECT DISTINCT inspections.*
FROM inspections
JOIN samples s ON inspections.id = s.inspection_id
LEFT OUTER JOIN results r ON r.`sample_id` = s.`id`
WHERE r.id IS NULL
これを素敵な ActiveRecord 呼び出しに変えようとしていfind
ますが (を除いてfind_by_sql
)、「ネストされた」関連付け (用語?) の左結合を構文に組み込む方法がわかりません。
誰でも私を助けることができますか?ところで、これは Rails 2.3 アプリ用です。
今のところ私は持っています
Inspection.all(:select => "distinct inspections.*",
:joins => "join samples on samples.inspection_id = inspections.id " +
"left join results on results.sample_id = samples.id",
:conditions => "results.id is null")
それは機能しますが、まだ洗練されておらず、SQL ステートメント全体に近すぎます。これより少しきれいなものはありますか?