Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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
如何在mysql中加上税金,然后乘以价格_Mysql - Fatal编程技术网

如何在mysql中加上税金,然后乘以价格

如何在mysql中加上税金,然后乘以价格,mysql,Mysql,我想把税加起来,然后把结果乘以总价 这是桌子 “费用”表 充电式 税种 收费式税单 我想计算税款,然后乘以每个费用的金额 我试着这样做: SELECT `charge_id` AS "Charge ID", SUM( tt.percentage ) AS "Tax" FROM charge c, charge_type ct, tax_type tt, charge_type_tax_list cttl WHERE tt.tax_type_id = cttl.tax_type_id

我想把税加起来,然后把结果乘以总价

这是桌子 “费用”表

充电式

税种

收费式税单

我想计算税款,然后乘以每个费用的金额 我试着这样做:

SELECT  `charge_id` AS  "Charge ID", SUM( tt.percentage ) AS  "Tax"
FROM charge c, charge_type ct, tax_type tt, charge_type_tax_list cttl
WHERE tt.tax_type_id = cttl.tax_type_id
GROUP BY c.charge_type_id, c.charge_id
LIMIT 0 , 30

您使用的联接语法在二十多年前就变得多余了。无论哪本书、哪门课或哪本教程教过你这种过时的语法,都要退出。正如您自己的查询清楚地显示的那样,这种语法很容易出错。转换为正确联接的查询是:

SELECT  `charge_id` AS  "Charge ID", SUM( tt.percentage ) AS  "Tax"
FROM charge c
CROSS JOIN charge_type ct
CROSS JOIN tax_type tt
INNER JOIN charge_type_tax_list cttl ON tt.tax_type_id = cttl.tax_type_id
GROUP BY c.charge_type_id, c.charge_id
LIMIT 0 , 30
您正在将所有费用记录与所有费用类型记录和所有税务类型记录合并。在您的示例中,6 x 3 x 3=54条记录。这毫无意义。首先,您可能只想加入相关记录

您真正想做的是将费用与其税额相加:

select
  c.charge_id,
  tax.tax_sum,
  c.amount,
  c.amount * (1 + coalesce(tax.tax_sum, 0)) as taxed_amount
from charge c
left join
(
  select
    cttl.charge_type_id,
    sum(tt.percentage) as tax_sum
  from charge_type_tax_list cttl
  join tax_type tt on tt.tax_type_id = cttl.tax_type_id
  group by cttl.charge_type_id
) tax on tax.charge_type_id = c.charge_type_id;

您可以在表之间进行
内部联接
,并计算相应的
百分比
,按费用
id
分组。下面的查询应该可以做到这一点:

SELECT charge.charge_type_id, (SUM(percentage) + 1) * charge.amount AS total_tax
FROM charge INNER JOIN charge_type ON charge.charge_type_id = charge_type.charge_type_id 
INNER JOIN charge_type_tax_list ON charge_type.id = charge_type_tax_list.charge_type_id 
INNER JOIN tax_type ON charge_type_tax_list.tax_type_id = tax_type.tax_type_id GROUP BY charges.id;

你应该做这个程序。你在查询帖子中尝试过什么?MayankPandeyz我已经编辑了我的post@Himani请在其中一个答案上打绿色勾,以帮助未来的读者快速获得正确/最佳答案。如果两者都不能解决问题,请在每个问题上留下评论,解释什么不太正确。我已经运行了您的查询,但它没有输出每个费用的结果。这将是一种没有费用税的情况。我已经更新了我的答案,所以查询现在加入了税。