У меня есть следующая таблица:
CREATE TABLE `wallet` (
`id` int(250) NOT NULL,
`amount` int(250) NOT NULL,
`type` varchar(250) NOT NULL,
`pg_id` varchar(250) NOT NULL,
`comments` varchar(250) DEFAULT NULL,
`intrument_type` varchar(250) NOT NULL,
`user_id` int(250) NOT NULL,
`date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `wallet` (`id`, `amount`, `type`, `pg_id`, `comments`, `intrument_type`, `user_id`, `date`) VALUES
(17, 50, 'CREDIT', 'xxxxq123', NULL, 'REFUND', 1, '2020-04-18'),
(18, 50, 'CREDIT', 'xxxxq123', NULL, 'REFUND', 1, '2020-04-18'),
(22, 100, 'DEBIT', 'NONE', '0', 'SERVICE_CHARGE', 1, '2020-04-19'),
(23, 100, 'DEBIT', 'NONE', '0', 'SERVICE_CHARGE', 1, '2020-04-19'),
(24, 100, 'DEBIT', 'NONE', '0', 'SERVICE_CHARGE', 1, '2020-04-19'),
(25, 100, 'DEBIT', 'NONE', '0', 'SERVICE_CHARGE', 1, '2020-04-19'),
(26, 100, 'DEBIT', 'NONE', '0', 'SERVICE_CHARGE', 1, '2020-04-19'),
(27, 110, 'DEBIT', 'NONE', '0', 'SERVICE_CHARGE', 1, '2020-04-19'),
(28, 100, 'DEBIT', 'NONE', '0', 'SERVICE_CHARGE', 1, '2020-04-19'),
(29, 100, 'DEBIT', 'NONE', '0', 'SERVICE_CHARGE', 1, '2020-04-19'),
(30, 100, 'DEBIT', 'NONE', '0', 'SERVICE_CHARGE', 1, '2020-04-19'),
(31, 100, 'DEBIT', 'NONE', '0', 'SERVICE_CHARGE', 1, '2020-04-19'),
(32, 100, 'DEBIT', 'NONE', '0', 'SERVICE_CHARGE', 1, '2020-04-19'),
(33, 100, 'DEBIT', 'NONE', '0', 'SERVICE_CHARGE', 1, '2020-04-19'),
(34, 100, 'DEBIT', 'NONE', '0', 'SERVICE_CHARGE', 1, '2020-04-19');
http://sqlfiddle.com/#! 9 / 196aff
Я хочу получить баланс из этой таблицы.
Если я использую один запрос для получения баланса каждый раз, когда пользователь хочет получить баланс, этот запрос будет проходить через все транзакции, что приведет к большой нагрузке на пользователя.
Вместо этого я хочу написать функцию или триггер, который будет возвращать баланс против идентификатора пользователя, как я могу это сделать?