форум вебмастероff на AlfaSpace.NET |
Ubuntu и Linux
|реактивный бесплатный хостинг
| Киноклуб. ВСЁ БЕСПЛАТНО!
база знаний хостинга
|
правила форума
| Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ ° |
| Форум вебмастеров на AlfaSpace.NET / Создание сайта / Выборка по случайным значениям в MySQL |
| Автор | Сообщение |
| zhek Участник 73 |
# Дата: 8 Апр 2006 10:16 Здравствуйте уважаемые посетители форума! Подскажите пожалуйста, можно ли создать такой запрос к MySQL: Нужно сделать выборку в таблице table из записей, значение val1 которых равно '1' и при этом нужна только одна запись со случайным id. Должно быть что-то подобное: SELECT * FROM `table` WHERE `val1`='1' and `id`=RANDOM И ешё: Может быть кто-нибудь знает, где можно скачать справочник функций и синтаксиса MySQL (желательно на русском). |
| smallcms Участник 2752 |
# Дата: 8 Апр 2006 17:55 zhek SELECT * FROM `table` WHERE `val1`='1' and `id`=RANDOM
можно так: SELECT COUNT( * ) FROM FROM `table` WHERE `val1`='1' так мы узнаем сколько таких `val1`='1'. запомним значение. например так (как умею): $count_in_sql = mysql_fetch_array($result); $count = $count_in_sql[0] в $count у нас число склько всего `val1`='1' потом так: $query="SELECT * FROM `table` WHERE `val1`='1' and `id`=".rand(1,$count) я применил на конце пхп-функцию ранд(). я бы так делал. Может быть кто-нибудь знает, где можно скачать справочник функций и синтаксиса MySQL (желательно на русском).
http://www.denwer.ru/dis/Docs/ (желательно забирай 2002-11-26_Doc_MySQL3.23.47.exe) |
| zhek Участник 73 |
# Дата: 9 Апр 2006 00:50 Спасибо! Но оказывается это можно сделать и через MySQL: http://forum.alfaspace.net/6_3384_0.html |
| zhek Участник 73 |
# Дата: 9 Апр 2006 02:31 smallcms, небольшой недочёт в предложенном тобою скрипте: $query="SELECT * FROM `table` WHERE `val1`='1' and `id`=".rand(1,$count); в таблице: id val1 1 1 2 0 3 1 rand будет выбирать между 1 и 2, и вполне может выбрать запись с id=2, чегодопускать нельзя... А использование такого запроса: $query="SELECT * FROM `table` WHERE `val1`='1' ORDER BY RAND()"; происходит с затратой времени... По-сему предлагаю свой вариант: $res=mysql_query("SELECT * FROM `votes` WHERE `base`='1'"); $c=@mysql_num_rows($res) or die(mysql_error()); $rand=rand(1,$c); for($i=0;$i<$rand;$i++)$row=mysql_fetch_assoc($res); Такой вариант менее требователен ко времени (как я полагаю) и точно не выдаст строки со значением val1=0 |
|
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:23229, gzipped size:7894 |