2015-05-08 2 views
0

У меня есть динамическое количество строк, которые я вытягиваю, и хочу сделать некоторую математику. Вот история:Арифметика в sql-запросе

Столбцы таблицы:

  • идентификатор
  • метка времени
  • user_id
  • coupon_id
  • use_count

текущего запроса:

"SELECT cu.id, cu.use_count 
FROM coupons_used cu 
WHERE cu.user_id = " . $_SESSION['user']->ID . ";"; 

Правила:

use_count вход может быть как никогда 1 или -1.

Желаемый результат:

Я знаю, что я буду тянуть в ряды, которые имеют тот же coupon_id так что я надеюсь сделать это выполнить все добавления/вычитания с MySQL, так что я буду иметь одну строку для каждого уникального coupon_id с общей суммой для каждой строки use_count. Я делаю это 1), чтобы сохранить шаг и 2) узнать что-то, чего я еще не знаю.

Выходной ток:

id:1, timestamp:5/6/15, user_id:1, coupon_id:1, use_count:1 
id:2, timestamp:5/7/15, user_id:1, coupon_id:1, use_count:-1 
id:3, timestamp:5/7/15, user_id:1, coupon_id:1, use_count:1 
id:4, timestamp:5/8/15, user_id:1, coupon_id:1, use_count:1 

Желаемая Выход

id:null, timestamp:null, user_id:1, coupon_id:1, use_count:2 // 1 + -1 + 1

+4

Я до сих пор не знаю, что вы пытаетесь сделать ... –

+4

Вы просто ищете 'sum'? – sgeddes

+2

Это вопрос? – HKImpact

ответ

4

Что вы ищете называется "агрегатной функцией". В этом случае вы хотите использовать агрегированную функцию SUM в сочетании с предложением Group By. Это будет возвращать одну запись для каждого уникального результата, указанного в группе By:

"SELECT cu.id, SUM(cu.use_count) 
FROM coupons_used cu 
WHERE cu.user_id = " . $_SESSION['user']->ID . " 
GROUP BY cu.coupon_id;"; 
Смежные вопросы