Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Прошу помоши с запросом
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Прошу помоши с запросом

Страниц (1): [1]
 

1. Flash_PR - 24 Ноября, 2016 - 17:26:30 - перейти к сообщению
Есть таблица, в ней числовое поле (amount). В поле храняться отрицательные и положительные значение. Нужна помощь в составлении запроса (mysql) подсчет суммы всех отрицательных, всех положительных и общая сумма. Сейчас есть запрос (выложу кастрированый) такого вида

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.             t1.id,
  3.             SUM(t1.amount) AS amount,
  4.             SUM(t1.amount > 0) AS amount_plus,
  5.             SUM(t1.amount < 0) AS amount_minus
  6.  
  7.         FROM `my_table` AS t1
  8.  
  9.         WHERE (bla-bla-bla)
  10.  
  11.         GROUP BY CONCAT(t1.month_fix,'-',t1.year_fix)
  12.  
  13.         ORDER BY t1.month_fix ASC


Общая сумма все ОК, вместо суммы отрицательных и положительных считает КОЛИЧЕСТВО записей соответсвенно положительных и отрицательных значений, а надо именно суммы....Спасибо.
2. Мелкий - 24 Ноября, 2016 - 17:33:20 - перейти к сообщению
Просто добавить условие.
CODE (SQL):
скопировать код в буфер обмена
  1. SUM(IF(t1.amount > 0, t1.amount, 0))


CODE (SQL):
скопировать код в буфер обмена
  1. GROUP BY CONCAT(t1.month_fix,'-',t1.year_fix)
  2. ORDER BY t1.month_fix ASC

Должно быть
CODE (SQL):
скопировать код в буфер обмена
  1. GROUP BY t1.month_fix, t1.year_fix
  2. ORDER BY t1.month_fix ASC

Иначе получите ошибку на mysql 5.7 (пока, правда, редактированием sql_mode можно обойти). Но так правильнее, обращаться можно только к полям группировки либо к результату аггрегирующих функций. Аналогично обращение к t1.id в select
3. Flash_PR - 24 Ноября, 2016 - 17:49:53 - перейти к сообщению
Мелкий пишет:
Просто добавить условие.

Спасибо...тоже нашел такое решение в инете (плохо искал первый раз), в любом случае спасибо за участие и помощь....

 

Powered by ExBB FM 1.0 RC1