Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перемешать результат запроса 
V
    Опции темы
NLspieler
Дата 25.5.2010, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: нет
Всего: 19



Можно ли результат запроса SELECT перемешать случайным образом на БД?

И можно ли одним запросом достать несколько случайных записей из таблицы?


PM MAIL   Вверх
нуп
Дата 25.5.2010, 18:41 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: нет
Всего: 33



RANDOM() оперетор думаю поможет

PM MAIL   Вверх
NLspieler
Дата 25.5.2010, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: нет
Всего: 19



Цитата(нуп @  25.5.2010,  18:41 Найти цитируемый пост)
RANDOM() оперетор думаю поможет

ну и куда его вписывать?
Можешь пример написать?
PM MAIL   Вверх
нуп
Дата 25.5.2010, 19:14 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: нет
Всего: 33



Код

SELECT * FROM `blablba` WHERE id = 1111 ORDER BY RAND()

PM MAIL   Вверх
bars80080
Дата 26.5.2010, 00:01 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



id - это то, о чём я думаю?
PM MAIL WWW   Вверх
нуп
Дата 26.5.2010, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: нет
Всего: 33



А?! smile 
PM MAIL   Вверх
SickFxck
Дата 26.5.2010, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 16.4.2010

Репутация: нет
Всего: 1



PM MAIL   Вверх
NLspieler
Дата 26.5.2010, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: нет
Всего: 19



Придумал я наконец-то нужные запросы, благодаря посту нупа


Вот так вот можно достать $n случайных записей (или меньше, если их число меньше),  которые удовлетворяют определенному условию:
Код

SELECT *
FROM `waren`
WHERE `anzhal` > 0
ORDER BY RAND( )
LIMIT 0 , $n

т.е. сперва результат запроса перемешивается и берутся $n первых записей из этого перемешанного результата 


Или лучше делать по старому, с использованием php:
1. Узнать count() 
2. Сгенерировать случайные уникальные числа от 0 до $count-1 включительно.
3. Сделать n-запросов:
Код

SELECT *
FROM `waren`
WHERE `anzhal` >0
LIMIT $random_int , 1

?





Это сообщение отредактировал(а) NLspieler - 26.5.2010, 09:09
PM MAIL   Вверх
ksnk
Дата 26.5.2010, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 14
Всего: 386



Цитата(NLspieler @  26.5.2010,  09:03 Найти цитируемый пост)
т.е. сперва результат запроса перемешивается и берутся $n первых записей из этого перемешанного результата

да!
А вот если пройти по ссылке SickFxck, и прочитать предыдущие посты, выяснится, что ORDER BY RAND просматривает всю таблицу, расставляя каждому элементу случайное число, по которому потом и сортирует и выбирает нужное количество записей LIMIT'ом. Это может быть неважно, если табличка небольшая, а вот для приличного размера таблиц просматривать все записи может оказаться долго. Пост по ссылке SickFxck предлагает быстое и относительно недорогое решение этой проблемы.



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0521 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.