$SQL = mysql_query("SELECT * FROM database");
$query = mysql_fetch_array($SQL);
можно сделать так, чтобы в $query выводились не все данные, а только одна случайная
Спустя 44 минуты, 3 секунды (10.03.2010 - 08:27) qpayct написал(а):
можно.
я могу посредствами ПХП, но наверняка в мускле тож есть такая возможность. если нет обращайся, напишу.
я могу посредствами ПХП, но наверняка в мускле тож есть такая возможность. если нет обращайся, напишу.
Спустя 36 минут, 26 секунд (10.03.2010 - 09:04) sergeiss написал(а):
select * from yourtable order by rand() limit 1
Вот только при большом объеме таблицы будет долго выбирать.
Надо все-таки какие-то условия придумать (WHERE), которые ограничат выборку, и позволят получить результат достаточно быстро.
Спустя 1 день, 2 часа, 55 минут, 58 секунд (11.03.2010 - 11:59) denisov2 написал(а):
спасибо!
и ещё один вопрос. как узнать, существует ли в MySQL определённое значение в каком-то поле. К примеру мне нужно такое условие — если в поле users существует значение name, то выполняем такой-то код.
и ещё один вопрос. как узнать, существует ли в MySQL определённое значение в каком-то поле. К примеру мне нужно такое условие — если в поле users существует значение name, то выполняем такой-то код.
Спустя 7 минут, 5 секунд (11.03.2010 - 12:07) Nikitian написал(а):
$result=mysql_query('select null from table where field="XXX" limit 1');
if($result && mysql_num_rows($result)==1)
{
//Значение есть
}
elseif($result)
{
//Значения нет
}
else
{
//Ошибка запроса
}
Спустя 15 минут, 43 секунды (11.03.2010 - 12:22) Michael написал(а):
Цитата (sergeiss @ 10.03.2010 - 08:04) |
select * from yourtable order by rand() limit 1 Вот только при большом объеме таблицы будет долго выбирать. Надо все-таки какие-то условия придумать (WHERE), которые ограничат выборку, и позволят получить результат достаточно быстро. |
Интересно, а если сначала из базы получить общее кол-во строк count(*) (по идее где-то хранится это число а не считается каждый раз заново), в php выбрать уже случайное число x (0<x<это количество) и из базы выбрать:
limit x,1
Может будет быстрее?
Спустя 16 минут, 58 секунд (11.03.2010 - 12:39) sergeiss написал(а):
Цитата (Michael @ 11.03.2010 - 13:22) |
по идее где-то хранится это число а не считается каждый раз заново |
Считается заново каждый раз, когда ты выполняешь COUNT. Если хочешь, то можешь сам хранить это число где-то. Но в БД такого нету.
Спустя 11 минут, 23 секунды (11.03.2010 - 12:51) denisov2 написал(а):
Nikitian, спасибо!
Спустя 41 минута, 14 секунд (11.03.2010 - 13:32) Nikitian написал(а):
Цитата (sergeiss @ 11.03.2010 - 09:39) | ||
Считается заново каждый раз, когда ты выполняешь COUNT. Если хочешь, то можешь сам хранить это число где-то. Но в БД такого нету. |
В information_schema хранятся данные о таблицах, в том числе и количество записей. count(*) без where берётся именно оттуда, а не пересчитывается каждый раз. Плюс имеется кэш запросов.