私は、その "最後にNOT IN"をチェーンしようとしているMySQLクエリを持っています。ここでアクティブレコードの "NOT IN"
は、それがアクティブレコードを使用してRubyで次のようになります。
not_in = find_by_sql("SELECT parent_dimension_id FROM relations WHERE relation_type_id = 6;").map(&:parent_dimension_id)
joins('INNER JOIN dimensions ON child_dimension_id = dimensions.id')
.where(relation_type_id: model_relation_id,
parent_dimension_id: sub_type_ids,
child_dimension_id: model_type)
.where.not(parent_dimension_id: not_in)
だから、私がやろうとしているSQLクエリは次のようになります。
INNER JOIN dimensions ON child_dimension_id = dimensions.id
WHERE relations.relation_type_id = 5
AND relations.parent_dimension_id
NOT IN(SELECT parent_dimension_id FROM relations WHERE relation_type_id = 6);
誰かが私に何を確認することができます私はそのクエリに使用する必要がありますか? どこにチェーンしますか?
where.not(parent_dimension_id:Relation.where(...)。select(:parent_dimension_id)) 'ARはサブクエリ(parent_dimension_idから選択しないでください。中間のRuby配列を持つ2つのクエリ。 –
私はこれをテストしていませんが、明らかに正しいです。これを答えにして、私は落ちるでしょう:) –