форум вебмастеро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

Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:23229, gzipped size:7894

Mp3 Download || Мир Спанч боба || Song's Lyrics
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]