Арифметика в sql-запросе

57
5

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

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

    Я бы отметка времени Идентификатор пользователя 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 строки, у которых есть тот же 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

спросил(а) 2015-05-08T23:21:00+03:00 5 лет, 4 месяца назад
1
Решение
90

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

"SELECT cu.id, SUM(cu.use_count) 
FROM coupons_used cu
WHERE cu.user_id = " . $_SESSION['user']->ID . "
GROUP BY cu.coupon_id;";

ответил(а) 2015-05-08T23:27:00+03:00 5 лет, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема