Я бы хотел, чтобы ваша помощь относительно запроса, который я не могу получить в одном запросе.Выделение двух SUM из той же таблицы
Table timeaccount Field Type id mediumint(8) --> Primary key autoincrement user varchar(40) --> user, e.g. 'john.fisher' type varchar(15) --> can only be 'SUM' or 'SUBSTRACT' minutes smallint(5) --> an amount of minutes
Это представляет время учета работников, где каждая запись говорит, сколько минут рабочий (поле «пользователь») добавил или вычитается из его баланса (в соответствии с полем «типа»).
Я просто хочу, чтобы получить в одном запросе баланса от конкретного работника, в псевдо-SQL было бы:
select sum(minutes) from timeaccount where worker = 'john.fisher' and type = 'SUM' - select sum(minutes) from timeaccount where worker = 'john.fisher' and type = 'SUBSTRACT' as balance
Спасибо за вашу помощь,
Мне очень нравится элегантность использования умножаемого обратного трюка, чтобы использовать только один СУММ, который я ожидаю получить лучше, чем использование двух SUM, поэтому я отмечаю ваш ответ как Accepted, хотя я очень ценю MichaelRushton и другие ответы, как я узнал от них. Благодаря! – Nelson
Также вы используете CASE, где IF было бы достаточно, но я ценю его как полезный пример ситуации, когда «тип» может иметь не более двух возможных значений. – Nelson