Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Базы данных (http://www.flasher.ru/forum/forumdisplay.php?f=22)
-   -   Можно ли выбрать из Mysql базы случайные значения? (http://www.flasher.ru/forum/showthread.php?t=44692)

cosmo 26.04.2003 13:10

Можно ли выбрать из Mysql базы случайные значения?
 
Возможно ли случайным образом из базы выбрать значения и исключить дуюликаты на языке SQL или для этого обязательно использовать PHP?

Самурай 27.04.2003 00:15

да.

RAND

да хоть перлом....

inik 05.05.2003 18:34

select траляля order by rand();

Crazy 05.05.2003 20:16

...если версия 3.23.5 и выше.

cosmo 07.05.2003 00:03

Как мне избежать такую конструкцию?
Код:

mysql_connect($DBHostName,$DBUserName,$DBPassword);
mysql_select_db($DBName);
$r=mysql_query("select DISTINCT id,text from advtext");
if (@mysql_num_rows($r)<1) {
} else {
for ($j=0; $j<mysql_num_rows($r); $j++) {
$f2=mysql_fetch_array($r);
@$arr[]=$f2[id];
}
}
@shuffle($arr);
echo "<table width=100% border=1 cellspacing=0 cellpadding=0 bordercolor=#FCE8A3><tr>";
for ($k=0; $k<4; $k++) {
$r2=mysql_query("select text,link from advtext where id='$arr[$k]' limit 0,4");
if (@mysql_num_rows($r2)<1) {
} else {
for ($i=0; $i<mysql_num_rows($r2); $i++) {
$f=mysql_fetch_array($r2);
echo "<td width=25% bgcolor=#FDF2CE height=96 align=center><b><font color=#996600><a href='$f[link]'>$f[text]</a></b></font></td>";
}
}
}echo "</tr></table>";

Насколько я понял, RAND() просто генерирует случайное число, а мне нужно вывести случайно 4 результата из базы

kompadre 07.05.2003 05:56

Я бы сделал так :

<?
$max = mysql_num_rows($r);
for ($i=0;$i<4;$i++) {
$to_fetch[] = rand($max);
}
$sql = "select * from table where id = " . join (" or id = ", $to_fetch);

// ...
?>

за полноценность кода отвечать не могу : башка не варит

Crazy 07.05.2003 09:36

Цитата:

Насколько я понял, RAND() просто генерирует случайное число, а мне нужно вывести случайно 4 результата из базы [/b]
...order by rand() limit ...

cosmo 07.05.2003 13:13

Спасибо. Всё работает. Раз уж здесь собрались гуру MySQL :) То позволю себе задать ещё один вопрос. Есть ли в MySQL функцию, которая позволяет вычислить длину значения в поле, т.е. нужновы делить из базы то значение, длна которого больше других. Что-то типа MAX(), но MAX() выбирает по первому символу, а мне надо по длине.

Crazy 07.05.2003 13:26

select max(length(field)) ...

cosmo 07.05.2003 23:43

Спасибо ДРУГ. Вот уже во второй раз ты меня спасаешь. СПАСИБО.


Часовой пояс GMT +4, время: 06:45.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.