Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день.
Помогите пожалуйста новичку с формированием запроса.
Есть таблица, со следующими полями:
ID, ID_Par, TextQuestion
Демо данные:
ID ID_Par TextQuestions
0001| 0001| Вопрос 1 |
0002| 0001| Вопрос 2 |
0003| 0001| Вопрос 3 |
0004| 0001| Вопрос 4 |
0005| 0002| Вопрос 5 |
0006| 0002| Вопрос 6 |
0007| 0002| Вопрос 7 |
0008| 0002| Вопрос 8 |
0009| 0003| Вопрос 9 |
0010| 0003| Вопрос 10 |
0011| 0003| Вопрос 11 |
0012| 0003| Вопрос 12 |
Необходимо выбрать рандомом по одной записи в разрезе ID_Parant.
т.е. на выходе, по приведенным данным, мы должны иметь три записи, скажем 0001, 0007 и 0011.
Неактивен
Неактивен
1. FAQ я читал. Там рассматривается другая ситуация, а именно выбор любых строк рандомом из всей таблицы.
2. В предложенном Вами варианте нет случайности. Результат всегда будет одинаков.
Если вдаваться в сущность задачи, то ID - уникальный идентификатор вопроса, ID_Par - идентификатор категории вопроса (группы вопросов), TextQuestions - собственно текст вопроса.
Задача состоит в том, чтобы пользователь получал что-то типа теста. Тест формируется по принципу - из каждой группы вопросов, выбирается один вопрос рандомом (один вопрос из первой группы, один вопрос из второй группы и т.д.)
Неужели нет нормального красивого решения этой задачи? Второй день бьюсь и пока не преуспел...
Неактивен
Есть хороший способ и плохой способ. Хороший способ — делать по одному
запросу на категорию с помощью FAQ. Плохой способ — использовать то, что
MySQL работает и не по стандарту (некое расширение того, что написал Вася):
select id, id_par from (select id, id_par from tablename order by rand()) z group by id_par;
Учтите, что второе решение может в любой момент перестать работать, т.к.
режим «человек не умеет писать SQL — но сделаем, что сможем» может в любой
момент отмениться: в конце концов никто в MySQL не обязан поддерживать
ошибочные запросы не выдавать на них синтаксическую ошибку.
Неактивен