Table1: usermaster
uid uname
1 abc
2 xyz
3 pqr
4 def
Таблица2: Мастер транзакций
tid uid amount type
1 1 100 1
2 2 500 1
2 2 500 2
3 1 350 1
3 1 150 2
введите в таблицу транзакций:
1 for capital
2 for interest(5% of total capital)
Теперь я хочу рассчитать interest
от суммы капитала и процентов от стоимости капитала 5% каждый месяц.
Запрос должен быть передан: добавить запись интереса в transactionmaster
таблица автоматически для обоих пользователей, которые имеют капитал.
Результат должен понравиться в transactionmaster
Таблица.
tid uid amount type
1 1 100 1
2 2 500 1
3 1 600 1
4 1 35 2
5 2 25 2
Вот interest
также считать автоматически 5%.
Чтобы получать результаты автоматически каждый месяц, вам нужно запланировать SQL-запрос, используя события MySQL.
Вот ссылка
1) http://www.infotuts.com/schedule-sql-query-using-phpmyadmin-mysql-events/
Получить сумму капитала от транзакции
select sum(amount) from transactionmaster where uid = 13 and type=1
Теперь посчитайте проценты
select sum(amount) * (5 / 100) as interest from transactionmaster where uid=13 and type=1
просто!
Нечто подобное должно сработать:
INSERT INTO transactionmaster (uid, amount, type)
SELECT uid, ((SUM(amount) / 100) * 5), 2
FROM transactionmaster
WHERE type = 1
GROUP BY uid
Я предположил, что tid
поле является автокрементом
Редактировать:
Вышеприведенный запрос является одним выстрелом. то есть он будет систематически создавать записи типа 2 для всех идентификаторов пользователей типа 1. Другими словами, если вы используете его несколько раз, вы получите дубликаты записей типа 2.
Если вы хотите вставить строки типа 2 только для строк типа 1, у которых еще нет строк типа 2, вы можете сделать это:
INSERT INTO transactionmaster (uid, amount, type)
SELECT t1.uid, ((SUM(t1.amount) / 100) * 5), 2
FROM transactionmaster t1
LEFT JOIN transactionmaster t2 ON t1.uid=t2.uid AND t1.type=1 AND t2.type=2
WHERE t2.tid IS NULL
GROUP BY t1.uid
Отредактируйте 2, чтобы ответить на ваш комментарий.
Предположим, вы создали таблицу intrustmaster, имеющую такую структуру:
loweramt | higheramt | perc
---------------------------
100 | 199 | 5
200 | 399 | 4
Запрос с одним выстрелом станет таким:
INSERT INTO transactionmaster (uid, amount, type)
SELECT T.uid, ((totamt /100) * i.perc), 2
FROM
(
SELECT uid, (SUM(amount) / 100) as totamt
FROM transactionmaster
WHERE type = 1
GROUP BY uid
) T
INNER JOIN intrustmaster I
ON t.totamt BETWEEN i.loweramt AND i.higheramt