Я пытаюсь найти ответы на опрос, ограничивая количество ответов до предела, указанного в плане пользователя, затем для каждого выбора я хочу найти, сколько ответов есть. Мой текущий запрос выглядит следующим образом:Как ограничить запрос ActiveRecord, а затем запустить предложение «где»?
Response.joins(choice: { question: :survey })
.where(surveys: { id:survey.id })
.limit(plan.response_limit)
.where(choice: object)
Однако этот запрос выполняется «где» положения, затем ограничивает запрос. Может кто-нибудь, пожалуйста, скажите мне, как написать запрос, который делает то, что я хочу?
Edit:
Запрос я отправил производит следующий SQL:
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
Edit 2: SQL форматирования
Что такое SQL, который производит и какой SQL вы ожидаете? – Anthony
Редактировать: я добавил SQL к самому сообщению. Я не знаю, как должен выглядеть SQL-запрос, но я знаю, что хочу: я хочу найти ответы для данного опроса, ограничить результаты, скажем, 5000, а затем найти количество ответов для данного идентификатора выбора в рамках этих ограниченных результатов. –
Как обычно выглядит SQL-запрос. Предложение LIMIT всегда указывается в конце запроса. Это не значит, что он идет и выталкивает их всех, а затем предел ... это то, как он написан в соответствии со стандартом. –