Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
12 / 6 / 1
Регистрация: 17.01.2014
Сообщений: 135
1

Выводить часть значений рандомно и часть постоянную

21.11.2014, 11:15. Показов 1175. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите можно ли одним запросом выводить из таблицы какую-то часть вопросов рандомно и часть постоянную? То есть в таблице есть 100 вопросов, я сейчас делаю выборку их таблицы и вывожу рандомно 10 записей, а нужно чтобы первые вопросы были неизменны. Можно конечно два запроса сделать и выводить каждый из них, но не хочется дублировать цикл вывода для двух запросов. Рандомные записи вывожу так:
PHP
1
2
$select_tests = $pdo->query("select * FROM questions ORDER BY rand() limit 10");
$select_tests->setFetchMode(PDO::FETCH_ASSOC);
PHP
1
2
3
while  ($row = $select_tests->fetch()) {
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2014, 11:15
Ответы с готовыми решениями:

Создание таблицы, где часть полей берётся из другой таблицы, а часть создаётся заново
Здравствйте,как создать таблицу где часть полей берётся из другой ,а часть создаётся новые?Типа: ...

Как отредактировать постоянную часть перекрестной ссылки?
Добрый день всем! Как можно отредактировать постоянную часть перекрестной ссылки? Я хочу...

StringGrid: квадрат 10 на 10, в котором часть клеток будет рандомно заполняться цифрами от 1 до 5
Помогите с кодом, нужен квадрат 10 на 10, в котором часть клеток будет рандомно заполняться цифрами...

Одна часть диска RAID-1, другая часть - нет. Какие минусы?
Какие минусы ожидают меня, если я половину каждого из двух терабайтных дисков соединю в RAID-1, а...

4
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
21.11.2014, 11:20 2
Цитата Сообщение от Maksimus1991 Посмотреть сообщение
можно ли одним запросом выводить из таблицы какую-то часть вопросов рандомно и часть постоянную
<постоянная часть>
UNION [ ALL ]
<рандомная часть>
1
12 / 6 / 1
Регистрация: 17.01.2014
Сообщений: 135
21.11.2014, 12:48  [ТС] 3
Но для этого тогда нужно делать отдельную таблицу я так полагаю с постоянными вопросами, или вводить дополнительное поле, которое будет указывать на то является ли вопрос постоянным или нет, иначе рандомная выборка будет идти по всем вопросам, даже по постоянным, и получится, что записи дублируются. Например есть числа (1, 2, 3, 4, 5), выбираем постоянные значения 1,2 и потом рандомом еще число, и может получится что получим 1,2,2 я правильно понял? Или при такой выборке учитывается что второй запрос работает с оставшимися записями?

Добавлено через 6 минут
Я вот так написал,
PHP
1
$select_tests = $pdo->query("select * FROM questions WHERE id_questions = '1' union all select * FROM questions ORDER BY rand() limit 10");
Выдает ошибку:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id_questions' in 'where clause'' in /var/www/web-asm/public_html/test/select_test.php:24 Stack trace: #0 /var/www/web-asm/public_html/test/select_test.php(24): PDO->query('select * FROM q...') #1 /var/www/web-asm/public_html/test/index.php(8): tests::select(Object(PDO)) #2 {main} thrown in /var/www/web-asm/public_html/test/select_test.php on line 24

Добавлено через 4 минуты
С ошибкой разобрался, очепятался в в названии поля, а вот вопрос остается открытым, думаю нужно идентификатор делать, чтобы помечать что рандомно выводить поля с определенным идентификатором.

Добавлено через 13 минут
PHP
1
$select_tests = $pdo->query("select * FROM questions WHERE constant = '1' union all select * FROM questions WHERE constant = 0 ORDER BY rand() limit 10");
Сделал такой запрос, но все равно постоянно не выдает то что нужно, выдает как и раньше рандомом 10 вопросов.
0
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
21.11.2014, 12:50 4
Цитата Сообщение от Maksimus1991 Посмотреть сообщение
думаю нужно идентификатор делать
Разумеется нужно сделать колонку с признаком для отличия одной части от другой
0
12 / 6 / 1
Регистрация: 17.01.2014
Сообщений: 135
21.11.2014, 12:51  [ТС] 5
Усе исправил, второй запрос нужно в скобки выделять.

SQL
1
"select * FROM questions WHERE constant = '1' union all (select * FROM questions WHERE constant = 0 ORDER BY rand() limit 10)"
Добавлено через 1 минуту
Спасибо за помощь)
0
21.11.2014, 12:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2014, 12:51
Помогаю со студенческими работами здесь

Отбросить дробную часть числа, если дробная часть равна нулю
Всем доброго времени суток, каким образом можно устроить проверку равна ли дробная часть числа...

Отсортировать часть массива до максимального элемента по возрастанию, а оставшуюся часть по убыванию
Дан одномерный массив, элементы которого различны. Отсортировать часть массива до начальной позиции...

Aser Aspire 3003LC перестала работать часть кнопок и часть оперативки!
Есть у меня Древний ноутбук (Операционка XP, процессор Mobile AMD Semptron Processor 3000+ ...

Определить, превышает ли умноженная на 10 дробная часть числа его целую часть
Определить превышает ли умноженная на 10 дробная часть числа m/n целую часть m/n . Если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru