|  | 
Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Доброго времени суток!
Есть таблица "balans":
id  |  tekst  |  summ_p  |  summ_m  |  date
Мне нужно сделать запрос, который отбирал бы строки по введенному диапазону дат, и считал сумму значений отдельно столбца "summ_p" и отдельно столбца "summ_m" этих строк. У меня получается так:
SELECT
    date, tekst, summ_p, summ_m, SUM(summ_p) AS p, SUM(summ_m) AS m
FROM
    balans
WHERE
    date BETWEEN 'a' AND 'b'
GROUP BY date
ORDER BY date DESC
В итоге получаются совершенно неадекватные результаты... Подскажите, что не так, заранее огромное спасибо!
Неактивен

Стандарт SQL вообще-то запрещает такие запросы - выборка полей не входящих в group by и не имеющих групповой функции. По сути сервер MySQL выбирает в данном случае случайные записи.
Неактивен
Проблема как я понимаю в GROUP BY date. Ваш запрос выводит сумму где дата одинаковая, то есть если таблица такая:
                            
                                  id    tekst    summ_p    summ_m    date
               1    qwe    1    2    2009-10-14
               2    sad    4    5    2009-10-12
               3    qwrax    4    4    2009-10-14
               4    wsaad    1    4    2009-10-14
И если сделать запрос:
SELECT
    date, tekst, summ_p, summ_m, SUM(summ_p) AS p, SUM(summ_m) AS m
FROM
    balans
WHERE
    date BETWEEN '2009-10-12' AND '2009-10-14'
GROUP BY date
ORDER BY date DESC
То результат будет таким:
date    tekst    summ_p    summ_m    p    m
2009-10-14    qwe    1    2    6    10
2009-10-12    sad    4    5    4    5
Первый запрос, который пришёл на ум и решает Вашу проблему, но вряд ли он оптимален:
SELECT
    date, tekst, summ_p, summ_m, 
    (SELECT SUM(summ_p) FROM balans WHERE date BETWEEN 'a' AND 'b') AS p, 
    (SELECT SUM(summ_m) FROM balans WHERE date BETWEEN 'a' AND 'b') AS m
FROM
    balans
WHERE
    date BETWEEN 'a' AND 'b'
Неактивен

Я не понял, что именно требуется в исходной задаче - может нужно, чтобы в столбцах p и m значение возрастали последовательно, т.е. сумма предыдущих строк?
Неактивен
nightssss, большое спасибо, Ваш запрос идеально работает.
Неактивен
Страниц: 1