powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом UNION All
7 сообщений из 7, страница 1 из 1
Помогите с запросом UNION All
    #40096827
Fine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер,
В таблице для каждого вопроса есть один правильный (поле tf=1) и несколько неправильных ответов (поле tf=0). Как выбрать один правильный и N штук неправильных ответов ? Самое главное ответ получить в разброшенном виде.
Вот мой вариант, ответ получаю всегда в одном порядке:
Код: plsql
1.
2.
3.
(SELECT * FROM answers where tf=1 and `questionsid`=1 limit 1)
UNION all
(SELECT * FROM answers where tf=0 and `questionsid`=1 order by rand() limit 5 )
...
Рейтинг: 0 / 0
Помогите с запросом UNION All
    #40096829
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне за Вас стыдно. Именно этот вопрос подробнейшим образом, с примерами, разобран в Reference Manual в описании UNION.
Неужели Вы не читали официальную документацию?
...
Рейтинг: 0 / 0
Помогите с запросом UNION All
    #40096843
Fine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, не нашел там ответ моего вопроса.
И так:
1. Возьмем 1 правильный ответ
2. Возьмем N штук неправильных, всегда разных
3. Объединяем все это в рандом порядке.

Кто подскажет?
...
Рейтинг: 0 / 0
Помогите с запросом UNION All
    #40096924
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите с запросом UNION All
    #40096940
Fine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока что в голову приходило это:
Код: plsql
1.
2.
3.
4.
(SELECT *, rand() as t FROM answers where tf=1 and `questionsid`=1 limit 1)
UNION all
(SELECT *, rand() as t FROM answers where tf=0 and `questionsid`=1 order by rand() limit 5 )
order by t
...
Рейтинг: 0 / 0
Помогите с запросом UNION All
    #40096951
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
( SELECT *
  FROM answers 
  where tf
    AND `questionsid`= 1 )
UNION all
( SELECT *
  FROM answers 
  where NOT tf
    and `questionsid`= 1
  order by rand() limit 5 )
order by RAND()



Но можно и

Код: sql
1.
2.
3.
4.
5.
6.
SELECT *
FROM ( SELECT *
       FROM answers 
       where `questionsid`= 1
       order by tf DESC, rand() limit 6 ) x
ORDER BY RAND()
...
Рейтинг: 0 / 0
Помогите с запросом UNION All
    #40096954
Fine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
(SELECT *, rand() as t FROM answers where tf=1 and `questionsid`=1 limit 1)
UNION all
(SELECT *, rand() as t FROM answers where tf=0 and `questionsid`=1 order by rand() limit 5 )
order by t 


Отображение строк 0 - -1 (6 всего, Запрос занял 0.0009 сек.)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
( SELECT *
  FROM answers 
  where tf
    AND `questionsid`= 1 )
UNION all
( SELECT *
  FROM answers 
  where NOT tf
    and `questionsid`= 1
  order by rand() limit 5 )
order by RAND()


Отображение строк 0 - -1 (6 всего, Запрос занял 0.0013 сек.)

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT *
FROM ( SELECT *
       FROM answers 
       where `questionsid`= 1
       order by tf DESC, rand() limit 6 ) x
ORDER BY RAND()


Отображение строк 0 - 5 (6 всего, Запрос занял 0.0012 сек.)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом UNION All
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]