Php 在其他表上插入多行并进行条件检查。。只有一个查询
表1:usermasterPhp 在其他表上插入多行并进行条件检查。。只有一个查询,php,mysql,multirow,Php,Mysql,Multirow,表1:usermaster uid uname 1 abc 2 xyz 3 pqr 4 def tid uid amount type 1 1 100 1 2 2 500 1 2 2 500 2 3 1 350 1 3 1 150 2 表2:transactionmaster uid uname 1 abc 2 xyz 3 pqr 4 def tid uid amount
uid uname
1 abc
2 xyz
3 pqr
4 def
tid uid amount type
1 1 100 1
2 2 500 1
2 2 500 2
3 1 350 1
3 1 150 2
表2:transactionmaster
uid uname
1 abc
2 xyz
3 pqr
4 def
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)
现在,我想每月计算资本金额的利息,以及资本价值的ad利息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
这里的利息
也自动计算5% 像这样的事情应该可以做到:
INSERT INTO transactionmaster (uid, amount, type)
SELECT uid, ((SUM(amount) / 100) * 5), 2
FROM transactionmaster
WHERE type = 1
GROUP BY uid
我假设tid
字段是一个autoicrement
编辑:
上面的查询是一次性的。ie将系统地为所有具有“类型1”的uid创建“类型2”条目。换句话说,如果您多次使用它,您将得到重复的“Type2”条目
如果只想为还没有“类型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
oneshot查询将变为:
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
要在每个月自动获得结果,您需要使用MySQL事件计划SQL查询
这是参考资料
(一)
从transactionmaster获取资本总额
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
简单 请看,让我在此建议一件事,如果每个阶段的intrust不同,那么如何可能,假设我制作一个表intrustmaster,有3个板,100-200 intrust为5%,200-400 intrust为4%,500-1000 5%,那么需要做什么更改?100-200和200-400是uid的总量?是的,uid的总量,intrustmaster字段(id,min,max,intrust_rate)。回答了数据(1100200,5)(2201400,4)(3401500,5),但这样的聊天并不是问答的正确方式。因此,如果您还有其他问题,请编辑您的答案并添加详细信息,或者创建一个包含更具体元素的新问题。