[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Пара простых вопросов к гуру)
Страницы: 1, 2
Jumore
Привет, старейшины!)) Первый раз пришлось обратиться за помощью на форум и я надеюсь, Вы мне поможете.
После длительного перерыва в php, я решил кое что замутить и у меня ступор.
В общем проблема/задача такова:
1. Нужно вывести из базы 'USER' всех чуваков с определенным параметром.
2. Закинуть это всё в массив.
3. Рандомом выбрать одного из них.

Вроде бы не сложно, раньше делал, а сейчас не получается user posted image
Подскажите как это все правильно написать, чтобы работало?!
Заранее благодарю, очень на Вас надеюсь.

_____________
________
user posted image
Только одно делает исполнение мечты невозможным - это страх неудачи © Paulo Coelho
Игорь_Vasinsky
select * from `users` where `uid`<100 order by RAND()

3 вопроса = 1 ответ в 1 sql запросе

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Jumore
Цитата (Игорь_Vasinsky @ 20.03.2014 - 01:39)
select * from `users` where `uid`<100 order by RAND()

3 вопроса = 1 ответ в 1 sql запросе

Неужели так просто? biggrin.gif Я давненько писал в строчек 15 укладывался)

order by RAND() - в новинку) Все работает! Великий человек Вы!)

_____________
________
user posted image
Только одно делает исполнение мечты невозможным - это страх неудачи © Paulo Coelho
Игорь_Vasinsky
ну при желании можно и в 50 строчек написать)) было бы желание)

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Jumore
Цитата (Игорь_Vasinsky @ 20.03.2014 - 02:19)
ну при желании можно и в 50 строчек написать)) было бы желание)

На самом деле задача более серьезная, чем вывод случайных юзеров с параметром.. У меня браузерка, гонки, нужно подбирать оппонентов.. но схему я понял, буду усложнять сейчас smile.gif

_____________
________
user posted image
Только одно делает исполнение мечты невозможным - это страх неудачи © Paulo Coelho
Игорь_Vasinsky
есть простое, но в то же время золотое правило: если необходимо провести логические операции с данными из БД и БД позволяет это сделать - то и делать это нужно средствами БД

есть отдельные моменты и касаются он частных ситуаций, это уже отдельный вопрос и редкий - когда БД использую только для хранения данных.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Jumore
Не знал я про order by rand()
А так всегда стараюсь следовать этому правилу..
В общем спасибо тебе! Выручил так выручил)

_____________
________
user posted image
Только одно делает исполнение мечты невозможным - это страх неудачи © Paulo Coelho
Valick
Jumore, тут есть один маленький нюанс, order by rand() достаточно тяжёлая операция и при больших объемах от неё стараются избавляться


_____________
Стимулятор ~yoomoney - 41001303250491
Игорь_Vasinsky
у него есть условие в запросе, оно ограничивает кол-во записей

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Valick
Игорь_Vasinsky, и где вы там рассмотрели конкретную цифру?


_____________
Стимулятор ~yoomoney - 41001303250491
exotica
Цитата
вывести из базы 'USER' всех чуваков с определенным параметром

вот эта цифра, только вот беда в том что определенных чуваков с определенным параметром может оказаться и 100 и 1000 и 10000 и 100000+
при больших значениях подбор апонента может занять больше времени чем сама гонка с этим апонентом smile.gif

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Jumore
Цитата (exotica @ 20.03.2014 - 12:23)
Цитата
вывести из базы 'USER' всех чуваков с определенным параметром

вот эта цифра, только вот беда в том что определенных чуваков с определенным параметром может оказаться и 100 и 1000 и 10000 и 100000+
при больших значениях подбор апонента может занять больше времени чем сама гонка с этим апонентом smile.gif

rolleyes.gif Таких проблем, я думаю, не будет smile.gif доступных для гонки оппонентов будет в 2, а то и в 3 раза меньше, чем то кол-во сколько машин в базе.
Потому что слотов под машину 3, а гонять можно только на основной.

Да и популярность не будет такая громадная, чтобы рандомить овер 100000 машин.. Хотя.. Юзеры любят засирать бд 2-10 аккаунтами laugh.gif

Ну если получится так, что будет много записей рандомиться, как тогда поступать? В массив наверняка еще дольше собирать и рандомить..

_____________
________
user posted image
Только одно делает исполнение мечты невозможным - это страх неудачи © Paulo Coelho
Игорь_Vasinsky
ну наверно речь идёт о

select * from `users` where `uid`<100 order by RAND() LIMIT 1


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
yна php это так

  //ассоц массив вернувшийся с mysql_fetch_assoc()
$arr = range(0,1000);

$rand_ind = rand(0, count($arr));

var_dump($arr[$rand_ind]);


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Kusss
SELECT id FROM `table` ORDER BY RAND() LIMIT 10

запрос занял 0.6186 сек.
Если выводить 6 полей уже - запрос занял 1.0412 сек.

P.S. 652,093 записей
P.S.S. От лимита время не зависит, ну у меня в запросе что 1 что 10000. одинакого.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.