Сложный SQL запрос

Discussion in 'PHP' started by OdaN, 13 Feb 2009.

  1. OdaN

    OdaN Elder - Старейшина

    Joined:
    4 Mar 2006
    Messages:
    192
    Likes Received:
    17
    Reputations:
    1
    Народ, помогите составить запрос, а то всю голову сломал.
    Есть таблица:

    Code:
    +----+------+-------+-----+
    | 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" =((
     
  2. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    нет, cat - это кошка :D

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

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

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

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

    OdaN Elder - Старейшина

    Joined:
    4 Mar 2006
    Messages:
    192
    Likes Received:
    17
    Reputations:
    1
    Code:
    select sum(summ) from table where cat='5' and stat='0';
    Оно выдаст результат для 5ой категории, и равен он буит 170. А мине нать тоже самое, тока сразу для всех категорий, и упорядочить по ентой сумме, которя sum()
     
  4. VDShark

    VDShark Elder - Старейшина

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    "де категория равна 0"
    Я так понял где stat равен нулю? Тогда как то так
    Code:
    SELECT `cat`, SUM(`summ`) as `sum`
    FROM `table`
    WHERE `stat`=0
    GROUP BY `cat`
    ORDER BY `sum` 
    И еще... где тут собственно сложный запрос то? :)
     
    #4 VDShark, 13 Feb 2009
    Last edited: 13 Feb 2009
    1 person likes this.
  5. OdaN

    OdaN Elder - Старейшина

    Joined:
    4 Mar 2006
    Messages:
    192
    Likes Received:
    17
    Reputations:
    1
    VDShark, спасибо =)