私はアンケートの回答を見つけようとしています。回答の数をユーザの計画に指定された制限に制限し、各選択肢ごとにいくつの回答があるか調べたいと思います。私の現在のクエリは次のようになります。どのようにしてActiveRecordクエリを制限し、 "where"句を実行しますか?
Response.joins(choice: { question: :survey })
.where(surveys: { id:survey.id })
.limit(plan.response_limit)
.where(choice: object)
しかし、このクエリは「どこ」の句、を実行し、その後は、クエリを制限します。誰かが私にしたいことをするクエリを書く方法を教えてもらえますか?
編集:
SELECT "responses".* FROM "responses"
INNER JOIN "choices" ON "choices"."id" = "responses"."choice_id"
INNER JOIN "questions" ON "questions"."id" = "choices"."question_id"
INNER JOIN "surveys" ON "surveys"."id" = "questions"."survey_id"
WHERE "surveys"."id" = 1 AND "responses"."choice_id" = 1
LIMIT 5000
編集2:SQLは、あなたがサブクエリの中から選択するfrom
メソッドを使用することができます
これは何のSQLを生成しますか? – Anthony
編集:SQLを投稿自体に追加しました。 私はSQLクエリがどのように表示されるべきか分かりませんが、私がしたいことを知っています:特定のアンケートの回答を見つけ、結果を例えば5000に制限し、回答の数を探したいそれらの制限された結果内の与えられた選択IDに対して。 –
これは、通常、SQL照会のようなものです。 LIMIT句は常にクエリの最後に表示されます。それは、それがすべてのものを取り出して制限を実行することを意味するものではありません...それは、それが標準に従ってどのように書かれているかだけです。 –