Php 将类税IRS函数转换为SQL
正在尝试将类似税务的IRS函数转换为SQL。假设该表为一列(价格),层将动态添加Php 将类税IRS函数转换为SQL,php,sql,mysql,Php,Sql,Mysql,正在尝试将类似税务的IRS函数转换为SQL。假设该表为一列(价格),层将动态添加 我第一次尝试的一些案例陈述效果不好。我已经把它报废了:)谢谢你的帮助 您可以创建一个MYSQL用户定义函数。 SQL并不真正适合迭代循环。我会 select * from `brackets` where `tier` < $income 您认为直接使用SQL而不使用用户定义的函数是可行的吗?谢谢您的回复。这无疑是朝着正确方向迈出的一步。我希望能够在一个有一行值(价格或其他)的表上运行它。这些层将是动态的,
我第一次尝试的一些案例陈述效果不好。我已经把它报废了:)谢谢你的帮助 您可以创建一个MYSQL用户定义函数。
SQL并不真正适合迭代循环。我会
select * from `brackets` where `tier` < $income
您认为直接使用SQL而不使用用户定义的函数是可行的吗?谢谢您的回复。这无疑是朝着正确方向迈出的一步。我希望能够在一个有一行值(价格或其他)的表上运行它。这些层将是动态的,并随查询一起传递。这似乎采取了相反的方法?我建议您通过创建一个临时表来处理这个问题,该表包含您要查找的值,并将表名作为第二个参数传递给查询。你应该能拿着我的东西,从那里开始。我很好奇为什么你这么专注于把数据库作为计算的主要工具,我最终还是坚持使用代码内版本。你是对的,这是最有意义的。我感谢你的时间和建议。
DELIMITER $$
create procedure `calcTax`(IN v_param1 int)
begin
declare v_tier int;
declare v_rate decimal(3,3);
declare v_untaxed int default 0;
declare v_taxTotal float default 0;
set v_untaxed = v_param1;
set v_taxTotal = 0;
while v_untaxed > 0 do
select max(`tier`), max(`rate`) into v_tier, v_rate
from `brackets` where tier < v_untaxed order by `tier` desc limit 1;
set v_taxTotal = v_taxTotal + (v_untaxed - v_tier) * v_rate;
set v_untaxed = v_tier;
end while;
select v_taxTotal;
end;
$$
create table brackets (tier int primary key, rate float);
insert into brackets values (0, 0), (10000, 0.1), (50000, 0.2);