|
|
|
| Подскажите как вывести случайным образом, да еще и отсортировать?
Делаю так:
$query = mysql_query("select id, name, cena, balans from `adv` where `balans` > '0,04' and `ok`='1' order by rand() and order by `cena` desc LIMIT 5;");
|
не выводит :( | |
|
|
|
|
|
|
|
для: Елена Смирнова
(04.03.2009 в 16:55)
| | Я бы сделала выборку с сортировкой:
$query = mysql_query("SELECT id, name, cena, balans FROM adv
WHERE balans > 0,04 and ok=1 ORDER BY cena DESC LIMIT 20;");
|
А потом уже к вытянутому из базы массиву применила rand().
Одним махом и вытянуть с сортировкой, и перемешать, наверное, не получится. | |
|
|
|
|
|
|
|
для: Елена Смирнова
(04.03.2009 в 16:55)
| | >order by rand() and order by `cena`
Это не допустима - должна быть лишь одна конструкция order by, возможно вам больше подойдет вложенный запрос
select id, name, cena, balans from `adv` where id in (select id from `adv` where `balans` > '0,04' and `ok`='1' order by rand() LIMIT 5) order by `cena` desc;
|
| |
|
|
|
|
|
|
|
для: cheops
(04.03.2009 в 17:32)
| | >>order by rand() and order by `cena`
>Это не допустима - должна быть лишь одна конструкция order by, возможно вам больше подойдет вложенный запрос
>
select id, name, cena, balans from `adv` where id in (select id from `adv` where `balans` > '0,04' and `ok`='1' order by rand() LIMIT 5) order by `cena` desc;
|
LIMIT не поддерживается в подзапросах выражений IN, ANY и т.п. большинством версий ( как минимум по 5.0.45)
Но тем не менее (как минимум некоторые версии , опять же указанная) допускают подзапросы с ORDER BY и LIMIT в табличном выражении:
select * from
(select id, name, cena, balans from `adv`
where `balans` > '0,04' and `ok`='1'
order by rand()
LIMIT 5) AS adv_slice
order by `cena` desc;
|
Вообще же ORDER BY и LIMIT во внутренем подзапросе - трюк грязный. | |
|
|
|