PDA

Просмотр полной версии : Сложный SQL запрос


OdaN
13.02.2009, 14:26
Народ, помогите составить запрос, а то всю голову сломал.
Есть таблица:


+----+------+-------+-----+
| id | stat | summ | cat |
+----+------+-------+-----+
| 7 | 0 | 100 | 4 |
| 6 | 1 | 16542 | 1 |
| 8 | 0 | 70 | 5 |
| 9 | 0 | 100 | 5 |
| 10 | 0 | 200 | 3 |
| 11 | 0 | 97 | 4 |
| 12 | 1 | 43 | 6 |
| 13 | 0 | 27 | 7 |
| 14 | 0 | 14 | 4 |
| 15 | 0 | 387 | 2 |
| 16 | 0 | 66 | 4 |
| 17 | 0 | 40 | 7 |
| 18 | 0 | 3500 | 8 |
| 19 | 0 | 140 | 2 |
| 20 | 0 | 45 | 4 |
| 21 | 0 | 36 | 4 |
| 22 | 0 | 25 | 9 |
+----+------+-------+-----+

id - понятно, stat -статус, summ - сумма, cat - категория.
дык вот, надо отсюда родить сумму "summ" для каждой категории, приэтом суммировать только где категория равна 0, и отсортировать по этой сумме.

Из моих мучений максимум родился скрипт который по очереди считает для каждой категории, но он не сортирует по сумме "summ" =((

.:EnoT:.
13.02.2009, 14:38
cat - категория
нет, cat - это кошка :D

дык вот, надо отсюда родить сумму "summ" для каждой категории, приэтом суммировать только где категория равна 0, и отсортировать по этой сумме.

Не совсем понял понял слова суммировать, т.к. на сколько я понял у тебя уже готовые суммы хранятся. Или поясни с чем суммировать?

В общем из того что я понял, запрос будет примерно таким:


SELECT `summ` FROM `table`
WHERE `id` IN(1,2,3)
AND `cat` = '0'
ORDER by `summ` ASC


Или поясни поподробнее )

OdaN
13.02.2009, 14:44
select sum(summ) from table where cat='5' and stat='0';
Оно выдаст результат для 5ой категории, и равен он буит 170. А мине нать тоже самое, тока сразу для всех категорий, и упорядочить по ентой сумме, которя sum()

VDShark
13.02.2009, 14:46
"де категория равна 0"
Я так понял где stat равен нулю? Тогда как то так
SELECT `cat`, SUM(`summ`) as `sum`
FROM `table`
WHERE `stat`=0
GROUP BY `cat`
ORDER BY `sum`
И еще... где тут собственно сложный запрос то? :)

OdaN
13.02.2009, 14:50
VDShark, спасибо =)