Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将类税IRS函数转换为SQL_Php_Sql_Mysql - Fatal编程技术网

Php 将类税IRS函数转换为SQL

Php 将类税IRS函数转换为SQL,php,sql,mysql,Php,Sql,Mysql,正在尝试将类似税务的IRS函数转换为SQL。假设该表为一列(价格),层将动态添加 我第一次尝试的一些案例陈述效果不好。我已经把它报废了:)谢谢你的帮助 您可以创建一个MYSQL用户定义函数。 SQL并不真正适合迭代循环。我会 select * from `brackets` where `tier` < $income 您认为直接使用SQL而不使用用户定义的函数是可行的吗?谢谢您的回复。这无疑是朝着正确方向迈出的一步。我希望能够在一个有一行值(价格或其他)的表上运行它。这些层将是动态的,

正在尝试将类似税务的IRS函数转换为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);