Модераторы: nerezus, IZ@TOP, awers, skyboy, SamDark, MoLeX
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод случайных строк из базы 
:(
    Опции темы
Теги: нет
krasgames
Дата 23.7.2010, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Друзей: 0; Групп: 0
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



Код

$amam = 10; // сколько строк выбирать из базы 
$rows = mysql_result(mysql_query('SELECT COUNT(*) FROM `popka_eng`'), 0); 
$fackquery = array(); 
while (count($fquery) < $amam) { 
    $fackquery[] = '(SELECT * FROM `popka_eng` LIMIT '.rand(, $rows).', 1)'; 

$query = implode(' UNION ', $fackquery); 
$respa = mysql_query($query);

Посоветовали сделать вот так. Но оно не работает, если исправить ошибку, а если не исправить, то фатал эрор из-за кавычек на 5 строке. Вообще нужно взять из базы 20 случайных строк, не нагружая сильно ни базу, ни сервер, но в особенности ни базу.   
PM MAIL   Вверх
azesmcar
Дата 23.7.2010, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспорт
****


Профиль
Группа: Участник Клуба
Сообщений: 4943
Друзей: 0; Групп: 1
Регистрация: 12.11.2004
Где: г. Ереван, Армени я

Репутация: 10
Всего: 141





--------------------
PM WWW   Вверх
smartov
Дата 23.7.2010, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Обычный модератор
****


Профиль
Группа: Модератор
Сообщений: 3976
Друзей: 11; Групп: 1
Регистрация: 2.2.2006
Где: Киев

Репутация: 7
Всего: 250



То-же самое что у азенкар, только по-русски http://habrahabr.ru/blogs/mysql/54176/

Суть в том что order by rand - это очень медленно. Лучше сегенировать случайные числе, а потом выбрать используя where id =


--------------------
Жизнь никогда не бывает справедливой. Для большинства из нас так оно, пожалуй, и лучше. (О.Уайльд)

Блог "Выдернув из контекста"
PM MAIL WWW   Вверх
krasgames
Дата 25.7.2010, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Друзей: 0; Групп: 0
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



Цитата

Лучше сегенировать случайные числе

Ну или про что речь тогда конкретно?  smile  smile  smile  smile 
А в решении на php там как раз мой пример на харебаре этом.

Это сообщение отредактировал(а) krasgames - 25.7.2010, 20:50
PM MAIL   Вверх
krasgames
Дата 28.7.2010, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Друзей: 0; Групп: 0
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



В чем ошибка кода, который я скинул? Делаю, вроде, все так же, как и на habrahabr, а пишет, что результат после fetch_assoc некорректный. 
PM MAIL   Вверх
smartov
Дата 29.7.2010, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Обычный модератор
****


Профиль
Группа: Модератор
Сообщений: 3976
Друзей: 11; Групп: 1
Регистрация: 2.2.2006
Где: Киев

Репутация: 7
Всего: 250



В выложенном тобой коде нету fetch_assoc


--------------------
Жизнь никогда не бывает справедливой. Для большинства из нас так оно, пожалуй, и лучше. (О.Уайльд)

Блог "Выдернув из контекста"
PM MAIL WWW   Вверх
krasgames
Дата 30.7.2010, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Друзей: 0; Групп: 0
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



Правлюсь, когда я убираю ковычки из пятой строки, то пишет fetch_assoc error, который я добавляю ниже, но тут не написал. А тут ошибка syntax error, unexpected ',', expecting ')'.

Это сообщение отредактировал(а) krasgames - 30.7.2010, 11:21
PM MAIL   Вверх
bars80080
Дата 30.7.2010, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор горюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 10367
Друзей: 3; Групп: 8
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 59
Всего: 274



Цитата(krasgames @  30.7.2010,  11:15 Найти цитируемый пост)
А тут ошибка syntax error, unexpected ',', expecting ')'.


Цитата(krasgames @  23.7.2010,  13:14 Найти цитируемый пост)
rand(, $rows)

ну, если оно у тебя так на самом деле, то не понятно, как ты не видишь этой ошибки. где первый параметр?
PM MAIL   Вверх
krasgames
Дата 30.7.2010, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Друзей: 0; Групп: 0
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



Нету параметра, как и на харбарабабр. Добавил ноль, все работает.


Это сообщение отредактировал(а) krasgames - 30.7.2010, 14:17
PM MAIL   Вверх
Photon
Дата 31.7.2010, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Друзей: 0; Групп: 0
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 8
Всего: 10



Код топикстартера вообще работать не должен. Вижу минимум две ошибки:
4 строка: нет такой переменной $fquery
5 строка: неправильный вызов функции rand



--------------------
With best regards..
PM MAIL ICQ Skype GTalk   Вверх
krasgames
Дата 31.7.2010, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Друзей: 0; Групп: 0
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



Да, $fquery=$fackquery. Это я от делать нефиг имена косо переправил, когда писал топик=)

Это сообщение отредактировал(а) krasgames - 31.7.2010, 10:37
PM MAIL   Вверх
gcc (Online)
Дата 31.7.2010, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2215
Друзей: 0; Групп: 0
Регистрация: 25.4.2008
Где: %&й

Репутация: -1
Всего: 11



Код

SELECT
id_gr
FROM (
SELECT id_gr
FROM groups_contents
WHERE id_co = 79
ORDER BY RAND()
LIMIT 10 
) groups_contents


Код

select * from groups where in id_gr (bla.bla,etc);


http://forum.vingrad.ru/forum/topic-119426/0.html

http://forum.vingrad.ru/forum/topic-133667/0.html

разработчик mysql, варианты с хранимой процедурой:
http://jan.kneschke.de/projects/mysql/order-by-rand/

Добавлено через 2 минуты и 36 секунд
еще вродебы, так не много оптимизированно:

Код

mysql> select * from mysql.help_category where rand() > 0.5 order by rand() limit 10;
+------------------+-------------------------+--------------------+-----+
| help_category_id | name                    | parent_category_id | url |
+------------------+-------------------------+--------------------+-----+
|                5 | Plugins                 |                 33 |     |
|               27 | Utility                 |                 33 |     |
|                6 | MBR                     |                 32 |     |
|                7 | Control flow functions  |                 36 |     |
|               30 | Date and Time Functions |                 36 |     |
|               32 | Geographic Features     |                 33 |     |
|               11 | Encryption Functions    |                 36 |     |
|               12 | LineString properties   |                 32 |     |
|                3 | WKT                     |                 32 |     |
|               36 | Functions               |                 33 |     |
+------------------+-------------------------+--------------------+-----+
10 rows in set (0.03 sec)

mysql> select * from mysql.help_category where rand() > 0.5 order by rand() limit 10;
+------------------+------------------------+--------------------+-----+
| help_category_id | name                   | parent_category_id | url |
+------------------+------------------------+--------------------+-----+
|                9 | Account Management     |                 33 |     |
|               36 | Functions              |                 33 |     |
|               29 | Geometry relations     |                 32 |     |
|               23 | Geometry constructors  |                 32 |     |
|               27 | Utility                |                 33 |     |
|               28 | Language Structure     |                 33 |     |
|               18 | Bit Functions          |                 36 |     |
|                7 | Control flow functions |                 36 |     |
|               19 | Table Maintenance      |                 33 |     |
|               10 | Point properties       |                 32 |     |
+------------------+------------------------+--------------------+-----+
10 rows in set (0.00 sec)



--------------------
PM WWW ICQ   Вверх
Photon
Дата 31.7.2010, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Друзей: 0; Групп: 0
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 8
Всего: 10



gcc,  при больших таблицах order by rand() жутко медленный


--------------------
With best regards..
PM MAIL ICQ Skype GTalk   Вверх
Google
  Дата 2.9.2010, 22:47 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
IZ@TOP
skyboy
SamDark
MoLeX
awers

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 


Rambler's Top100

[ Время генерации скрипта: 0.4068 ]   [ Использовано запросов: 33 ]   [ GZIP включён ]


Реклама на сайте

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Хостинг: Vingrad Hosting     Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.