Мне нужен sql-запрос, который будет случайным образом выбирать 20 записей из таблицы, содержащей около 100 записей. Каждая запись имеет связанную категорию, которая идет от 1 до 15. Я хочу, чтобы записи, которые были выбраны, были полностью случайными. Однако у меня не может быть 3 записи из той же категории.Как написать запрос доступа к Microsoft SQL, который выбирает 20 случайных записей из 100, но фильтрует по категориям записей?
Мне кажется, что я могу случайным образом выбрать 20 записей, а затем исключить записи, содержащие данную категорию> = 3 раза. И затем снова выберите. Но все это подразумевает наличие нескольких запросов. И я не знаю, как передавать результаты одного запроса другому, а затем еще один запрос на доступ к Microsoft. Предполагается, что результаты запроса служат источником управления для формы. Что я делаю так, чтобы только один запрос дал мне результаты, которые затем могут быть использованы в качестве источника управления для формы?
Я пробовал следующее, и проблема в том, что вопросы из той же категории сгруппированы вместе, что не то, что я хочу. Вот пример того, что я пытаюсь.
`(SELECT TOP 3 MCQuestionsT.QuestionID, MCQuestionsT.QuestionText, MCQuestionsT.CategoryID
FROM MCQuestionsT
WHERE (((MCQuestionsT.CourseCode)="2323") AND MCQuestionsT.CategoryID = 1)
ORDER BY Rnd(MCQuestionsT.QuestionID))
UNION ALL
(SELECT TOP 3 MCQuestionsT.QuestionID, MCQuestionsT.QuestionText, MCQuestionsT.CategoryID
FROM MCQuestionsT
WHERE (((MCQuestionsT.CourseCode)="2323") AND MCQuestionsT.CategoryID = 2)
ORDER BY Rnd(MCQuestionsT.QuestionID))
UNION ALL
(SELECT TOP 3 MCQuestionsT.QuestionID, MCQuestionsT.QuestionText, MCQuestionsT.CategoryID
FROM MCQuestionsT
WHERE (((MCQuestionsT.CourseCode)="2323") AND MCQuestionsT.CategoryID = 3)
ORDER BY Rnd(MCQuestionsT.QuestionID))
`
Почему бы не использовать 'RAND()' в процедуре VBA, чтобы выбрать строки, а затем построить и выполнить специальный SQL заявление? – MoondogsMaDawg