Никак не могу сообразить как отсортировать
SELECT
c.*,
(SELECT count(*) as cnt FROM ss_products c2 WHERE c2.model=c.model AND c2.vendor=c.vendor AND amount>0 AND available='1') as mcnt
FROM ss_products c WHERE (????) AND enabled='1'
ORDER BY mcnt DESC, model, mcnt=0, amount=0, available, dia LIMIT 0,20
Вот такой запрос отдает например
Модель | mcnt
B58 | 13
B70 | 12
B70 | 12
B70 | 12
B78 | 11
B58 | 0
B58 | 0
B58 | 0
B58 | 0
А нужно что бы отдавал
Модель | mcnt
B58 | 13
B58 | 0
B58 | 0
B58 | 0
B58 | 0
B70 | 12
B70 | 12
B70 | 12
B78 | 11
Т.е. сортировка по модели но не по алфавиту, а по mcnt.
Подскажите пожалуйста как это сделать.
Спустя 7 минут, 1 секунда (13.01.2012 - 11:54) Placido написал(а):
Просто поменяйте местами mcnt и model в части ORDER
...ORDER BY model, mcnt DESC,...
Спустя 42 секунды (13.01.2012 - 11:55) Winston написал(а):
ORDER BY model, mctn DESC?
PS: Опередили :D
Спустя 16 минут, 50 секунд (13.01.2012 - 12:12) mrmaloy написал(а):
ORDER BY model, mctn DESC
В таком случае будет сортировка по названию модели
Модель | mcnt
A22 | 0
A23 | 0
B58 | 13
B58 | 0
B58 | 0
B58 | 0
B58 | 0
B70 | 12
B70 | 12
B70 | 12
B78 | 11
а нужно что бы было
B58 | 13
B58 | 0
B58 | 0
B58 | 0
B58 | 0
B70 | 12
B70 | 12
B70 | 12
B78 | 11
A22 | 0
A23 | 0
т.е. первыми идут те модели в которых большее mcnt и они идут все вместе
Спустя 1 минута, 38 секунд (13.01.2012 - 12:14) Winston написал(а):
Цитата (mrmaloy @ 13.01.2012 - 11:12) |
а нужно что бы было |
Походу без извращений или доп. поля это невозможно сделать.
Спустя 55 минут, 42 секунды (13.01.2012 - 13:09) Placido написал(а):
Упрощенно. Если в таблице `yourtable` есть поля `model` и `mcnt`, то будет работать приведенный ниже запрос. Изменить его под вашу таблицу, думаю, будет несложно
SELECT
`t1`.`model`, `t2`.`mcnt`
FROM
(SELECT
`model`, MAX(`mcnt`) `b1`
FROM
`yourtable`
GROUP BY `model`) `t1`
RIGHT JOIN
`yourtable` `t2` ON `t1`.`model` = `t2`.`model`
ORDER BY `t1`.`b1` DESC;
Спустя 7 минут, 18 секунд (13.01.2012 - 13:17) mrmaloy написал(а):
Placido
В таблице нет поля mcnt - это поле создается в запросе
В таблице нет поля mcnt - это поле создается в запросе
Спустя 5 минут, 17 секунд (13.01.2012 - 13:22) Placido написал(а):
Я ж говорю - упрощенно. Вставьте вместо
...MAX(`mcnt`) `b1`...вот это:
...MAX(SELECT count(*) as cnt FROM ss_products c2 WHERE c2.model=c.model AND c2.vendor=c.vendor AND amount>0 AND available='1') `b1`...
_____________
<td></td>...<td></td>...<td></td>... тихо стучали колеса поезда в ночной тишине.