Итак, я пытаюсь написать запрос на обновление, который либо обновляет средства пользователя, основываясь на том, есть ли у него виза или MasterCard.
То, что я пытаюсь здесь заявить, и что я думаю, что является причиной ошибки, это обновить сумму, если текущий баланс и желаемая сумма вывода меньше, чем 10.000. Если это не так, и баланс визы становится меньше 0, я создаю преднамеренную ошибку, чтобы потом использовать ее, чтобы перенаправить пользователя на страницу с ошибкой (я знаю, что это не самый лучший способ сделать это на ПК).
Вот как выглядит код:
const connection = require('../models/loginrouters');
function takeMoney(amount, cardnumber) {
// prettier-ignore
console.log("db cardnumber is".cardnumber)
console.log('db amount is', amount);
connection.query(
"UPDATE users.usercards SET Balance = CASE WHEN type = 'visa' AND balance>'" +
amount +
"' THEN Balance - '" +
amount +
"' ELSE CASE WHEN type='mastercard' AND SUM(balance - '" +
amount +
"')<'-10000' THEN Balance - '" +
amount +
"' ELSE 'NEIN CASH' END END WHERE CardNumber = '" +
cardnumber +
"';",
function(err) {
if (err) {
console.log('You too poor');
console.log(err);
} else {
console.log('You got the cash');
}
}
);
}
module.exports = takeMoney;
Когда этот запрос выполняется, я получаю следующую ошибку:
Ошибка: ER_INVALID_GROUP_FUNC_USE: недопустимое использование групповой функции
Запрос размещен как:
sql: 'UPDATE users.usercards SET Balance =
CASE WHEN type = \'visa\' AND balance>\'1000\'
THEN Balance - \'1000\'
ELSE
CASE WHEN type=\'mastercard\' AND SUM(balance - \'1000\')<\'-10000\'
THEN Balance - \'1000\'
ELSE \'NEIN CASH\'
END
END
WHERE CardNumber = \'123456\';'
Заранее спасибо за ваш ответ!