![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|
|
|||||
|
Возможно ли случайным образом из базы выбрать значения и исключить дуюликаты на языке SQL или для этого обязательно использовать PHP?
__________________
защита информации |
|
|||||
|
Ветеран форума
|
да.
RAND да хоть перлом....
__________________
... |
|
|||||
|
Регистрация: Mar 2002
Сообщений: 14
|
select траляля order by rand();
|
|
|||||
|
Регистрация: Dec 2001
Сообщений: 4,159
|
...если версия 3.23.5 и выше.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
Как мне избежать такую конструкцию?
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>";
__________________
защита информации |
|
|||||
|
Я бы сделал так :
<? $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); // ... ?> за полноценность кода отвечать не могу : башка не варит |
|
|||||
|
Регистрация: Dec 2001
Сообщений: 4,159
|
Цитата:
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
Спасибо. Всё работает. Раз уж здесь собрались гуру MySQL
То позволю себе задать ещё один вопрос. Есть ли в MySQL функцию, которая позволяет вычислить длину значения в поле, т.е. нужновы делить из базы то значение, длна которого больше других. Что-то типа MAX(), но MAX() выбирает по первому символу, а мне надо по длине.
__________________
защита информации |
|
|||||
|
Регистрация: Dec 2001
Сообщений: 4,159
|
select max(length(field)) ...
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
Спасибо ДРУГ. Вот уже во второй раз ты меня спасаешь. СПАСИБО.
__________________
защита информации |
![]() |
Часовой пояс GMT +4, время: 06:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|