Jumore
20.03.2014 - 01:35
Привет, старейшины!)) Первый раз пришлось обратиться за помощью на форум и я надеюсь, Вы мне поможете.
После длительного перерыва в php, я решил кое что замутить и у меня ступор.
В общем проблема/задача такова:1. Нужно вывести из базы 'USER' всех чуваков с определенным параметром.
2. Закинуть это всё в массив.
3. Рандомом выбрать одного из них.
Вроде бы не сложно, раньше делал, а сейчас не получается
Подскажите как это все правильно написать, чтобы работало?!
Заранее благодарю, очень на Вас надеюсь.
_____________
________
Только одно делает исполнение мечты невозможным - это страх неудачи © Paulo Coelho
Игорь_Vasinsky
20.03.2014 - 01:39
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
20.03.2014 - 02:07
Цитата (Игорь_Vasinsky @ 20.03.2014 - 01:39) |
select * from `users` where `uid`<100 order by RAND()
3 вопроса = 1 ответ в 1 sql запросе |
Неужели так просто?
Я давненько писал в строчек 15 укладывался)
order by RAND() - в новинку) Все работает! Великий человек Вы!)
_____________
________
Только одно делает исполнение мечты невозможным - это страх неудачи © Paulo Coelho
Игорь_Vasinsky
20.03.2014 - 02:19
ну при желании можно и в 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
20.03.2014 - 02:21
Цитата (Игорь_Vasinsky @ 20.03.2014 - 02:19) |
ну при желании можно и в 50 строчек написать)) было бы желание) |
На самом деле задача более серьезная, чем вывод случайных юзеров с параметром.. У меня браузерка, гонки, нужно подбирать оппонентов.. но схему я понял, буду усложнять сейчас
_____________
________
Только одно делает исполнение мечты невозможным - это страх неудачи © Paulo Coelho
Игорь_Vasinsky
20.03.2014 - 02:27
есть простое, но в то же время золотое правило: если необходимо провести логические операции с данными из БД и БД позволяет это сделать - то и делать это нужно средствами БД
есть отдельные моменты и касаются он частных ситуаций, это уже отдельный вопрос и редкий - когда БД использую только для хранения данных.
_____________
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
20.03.2014 - 02:34
Не знал я про order by rand()
А так всегда стараюсь следовать этому правилу..
В общем спасибо тебе! Выручил так выручил)
_____________
________
Только одно делает исполнение мечты невозможным - это страх неудачи © Paulo Coelho
Valick
20.03.2014 - 08:52
Jumore, тут есть один маленький нюанс, order by rand() достаточно тяжёлая операция и при больших объемах от неё стараются избавляться
_____________
Стимулятор ~yoomoney - 41001303250491
Игорь_Vasinsky
20.03.2014 - 09:57
у него есть условие в запросе, оно ограничивает кол-во записей
_____________
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
20.03.2014 - 11:28
Игорь_Vasinsky, и где вы там рассмотрели конкретную цифру?
_____________
Стимулятор ~yoomoney - 41001303250491
exotica
20.03.2014 - 12:23
Цитата |
вывести из базы 'USER' всех чуваков с определенным параметром |
вот эта цифра, только вот беда в том что определенных чуваков с определенным параметром может оказаться и 100 и 1000 и 10000 и 100000+
при больших значениях подбор апонента может занять больше времени чем сама гонка с этим апонентом
_____________
[FAQ]Регистрации пользователей, сохранение в БД---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Jumore
21.03.2014 - 00:28
Цитата (exotica @ 20.03.2014 - 12:23) |
Цитата | вывести из базы 'USER' всех чуваков с определенным параметром |
вот эта цифра, только вот беда в том что определенных чуваков с определенным параметром может оказаться и 100 и 1000 и 10000 и 100000+ при больших значениях подбор апонента может занять больше времени чем сама гонка с этим апонентом |
Таких проблем, я думаю, не будет
доступных для гонки оппонентов будет в 2, а то и в 3 раза меньше, чем то кол-во сколько машин в базе.
Потому что слотов под машину 3, а гонять можно только на основной.
Да и популярность не будет такая громадная, чтобы рандомить овер 100000 машин.. Хотя.. Юзеры любят засирать бд 2-10 аккаунтами
Ну если получится так, что будет много записей рандомиться, как тогда поступать? В массив наверняка еще дольше собирать и рандомить..
_____________
________
Только одно делает исполнение мечты невозможным - это страх неудачи © Paulo Coelho
Игорь_Vasinsky
21.03.2014 - 00:43
ну наверно речь идёт о
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
21.03.2014 - 00:46
yна php это так
$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
SELECT id FROM `table` ORDER BY RAND() LIMIT 10
запрос занял 0.6186 сек.
Если выводить 6 полей уже - запрос занял 1.0412 сек.
P.S. 652,093 записей
P.S.S. От лимита время не зависит, ну у меня в запросе что 1 что 10000. одинакого.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.