[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрос к БД
Страницы: 1, 2
123456
Помогите Доделать запрос MySql

есть
mysql_query("SELECT * FROM `mg_user` ORDER BY RAND() LIMIT 1 ")



как сделать, чтоб выводило одну случайную строку, где поле `balans` минимальное
T1grOK
Есть несколько минимальных балансов?

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
T1grOK
Навскидку. Можно вложенным запросом c лимитом. Если конечно я задачу правильно понял.

SELECT `mu`.* FROM (SELECT * FROM `mg_user` ORDER BY `balans` ASC LIMIT 10) AS `mu` ORDER BY RAND() LIMIT 1


_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Игорь_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
123456
Цитата (T1grOK @ 2.11.2012 - 09:17)
Есть несколько минимальных балансов?

Это не известно! Они каждый день меняются, может быть и несколько одинаковых.
T1grOK
Решение постом моим выше.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
123456
T1grOK
Ну мне не совсем это надо было =)

Вот я Примерно нужный мне запрос составил:

SELECT * FROM `mg_user` 
WHERE
`referals1` = 'onelogin' and
`oplata_data` > '0'
ORDER BY `ref1` ASC LIMIT 1


Только мне вот надо, чтоб как то проверяло, если есть несколько минимальных одинаковых ref1, то должно проверять ref2 и т.д. пока не выберет одно.

Имеются ref1- ref10
123456
ауу
T1grOK
Есть 2 варианта решения
1) Правильно спроектировать БД
2) Писать процедуру.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
123456
а поточнее?
123456
НУ может кто что подскажет?
123456
Думаю сделать как-то так:

$act_min_sql = mysql_query("SELECT `id`, MIN(`ref1`) FROM `mg_user`
WHERE
`referals1` = 'onelogin' and
`oplata_data` > '0'
"
);

if (mysql_num_rows($act_min_sql) > 1)
{
$act_min_sql = mysql_query("SELECT `id`, MIN(`ref2`) FROM `mg_user`
WHERE
`referals1` = 'onelogin' and
`oplata_data` > '0'
"
);
}


Т.е. сначала выбираем все минимальные `ref1`, если находит больше одной, то делаем запрос на `ref2` и т.д. (Сделаю через цикл)

Или может как-то по другому можно?
olgatcpip
что-то я не поняла к чему столько сложностей :blink:
Такой вариант тебе не подойдет?
mysql_query("SELECT * FROM `mg_user` ORDER BY balans asc, RAND() LIMIT 1 ")

Здесь сперва отсортируются по значению balans и с одинаковым балансом в случайном порядке
Тут важно знать
balans - не должен быть null
результат какждый раз разный :)



_____________
Ласковое слово и кошке приятно... Плюсик в карму сойдет wink.gif
*smarty дока - новая любовь
Моё рукотворение ругайте, хвалите smile.gif
Веду маленький блог
в этом блоге публикую новые работы
WMR217126627282 wink.gif

123456
Цитата (olgatcpip @ 7.11.2012 - 08:49)
что-то я не поняла к чему столько сложностей :blink:
Такой вариант тебе не подойдет?
mysql_query("SELECT * FROM `mg_user` ORDER BY balans asc, RAND() LIMIT 1 ")

Здесь сперва отсортируются по значению balans и с одинаковым балансом в случайном порядке
Тут важно знать
balans - не должен быть null
результат какждый раз разный :)

Ты о чём? Вот что мне надо сделать
Цитата
Вот я Примерно нужный мне запрос составил:

SELECT * FROM `mg_user`
    WHERE
      `referals1` = 'onelogin' and
      `oplata_data` > '0'
    ORDER BY `ref1` ASC LIMIT 1


Только мне вот надо, чтоб как то проверяло, если есть несколько минимальных одинаковых ref1, то должно проверять ref2 и т.д. пока не выберет одно.

Имеются ref1- ref10
Guest
Цитата
если есть несколько минимальных одинаковых ref1, то должно проверять ref2

Сделай сортировку сразу по нескольким полям.
Быстрый ответ:

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