Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выборка случайных значений
 
 автор: lovop   (18.10.2008 в 22:08)   письмо автору
 
 

Есть таблица link с полями id, url, title, category, active.
В этой таблице хранится список ссылок на сайты (url), название сайта (title),
категория (category), active (одобрен модератором, тип boolean). id это уникальный идентификатор.
Запрос такой SELECT url, title FROM link WHERE category=foto AND active=true

в PHP есть rand, это я знаю.
После этого запроса скрипт получит список сайтов,
теперь надо выбрать из получившегося списка случайным образом 10 разных сайтов.
Вот как это сделать не знаю, какой SQL-запрос использовать?

  Ответить  
 
 автор: ddhvvn   (18.10.2008 в 22:57)   письмо автору
 
   для: lovop   (18.10.2008 в 22:08)
 

добавьте в запрос "ORDER BY RAND() LIMIT 10"

  Ответить  
 
 автор: lovop   (18.10.2008 в 23:40)   письмо автору
 
   для: ddhvvn   (18.10.2008 в 22:57)
 

Вы ответили:
"ORDER BY RAND() LIMIT 10"
Я кое что не понял.
Это сам сервер mysql вызывает функцию rand?
С запросом LIMIT я знаком, поэтому знаю что это лимит.
Да, идея правильная. Но эта rand может сгенерировать
одинаковые значения, а мне надо разные каждый раз.

Может результат первого запроса добавить с массив (как функция file) и из этого массива
for i=1 to 10 и каждый раз в теле цикла
вызывать rand (0, длина_массива)
и после этого удалять из массива выбранный элемент?

  Ответить  
 
 автор: cheops   (19.10.2008 в 02:40)   письмо автору
 
   для: lovop   (18.10.2008 в 23:40)
 

Он всякий раз будет генерировать разные значения, постоянная случайная последовательность возникает только в том случае, если передать какой-нибудь числовой параметр функции RAND(). Впрочем в любом случае этот режим в конструкции ORDER BY не должен работать.

  Ответить  
 
 автор: ddhvvn   (19.10.2008 в 10:45)   письмо автору
 
   для: cheops   (19.10.2008 в 02:40)
 

>...Впрочем в любом случае этот режим в конструкции ORDER BY не должен работать.

В смысле? Тут уже я не понял...

  Ответить  
 
 автор: cheops   (19.10.2008 в 12:01)   письмо автору
 
   для: ddhvvn   (19.10.2008 в 10:45)
 

Вам не удастся обработать запрос ORDER BY RAND(10), только ORDER BY RAND()

  Ответить  
 
 автор: ddhvvn   (19.10.2008 в 13:52)   письмо автору
 
   для: cheops   (19.10.2008 в 12:01)
 

ясно =)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования