MYSQL - 多表连接和SUM

标签 mysql join sum

我在连接三个表并获取其值的总和时遇到问题我有三种类型的表税收类型、采购订单和采购项目

目前我正在获取税务报告结果,请查看下面。

Tax Types
id  name        
1   No Tax      
2   VAT @10%    
3   GST @6%     
4   VAT @20%

Purchase Order
id  total   order_tax_id    order_tax   total_tax   grand_total
1   10.0000     1           0.0000      0.0000      10.0000
2   10.0000     2           1.0000      1.0000      11.0000
3   10.0000     3           0.6000      0.6000      10.6000
4   10.0000     4           2.0000      2.0000      12.0000
5   10.0000     1           0.0000      0.9100      10.0000
6   10.0000     1           0.0000      0.5700      10.0000
7   10.0000     1           0.0000      1.6700      10.0000
9   10.0000     2           1.0000      1.5700      11.0000

Purchase Items
id  purchase_id     tax_rate_id     item_tax    tax         subtotal
1   1               1               0.0000      0.0000      10.0000
2   2               1               0.0000      0.0000      10.0000
3   3               1               0.0000      0.0000      10.0000
4   4               1               0.0000      0.0000      10.0000
5   5               2               0.9100      10.0000%    10.0000
6   6               3               0.5700      6.0000%     10.0000
7   7               4               1.6700      20.0000%    10.0000
9   9               3               0.5700      6.0000%     10.0000

输出应该是这样的

tax_name   sum_of_subtotal   sum_of_item_tax   sum_of_grand_total   sum_of_total_tax
VAT @20%    10.00            1.67    10.00     2.00                 3.67
VAT @10%    10.00            1.67    10.00     2.00                 3.67
No Tax      40.00            0.00    0         0                    0.00
GST @6%     10.00            1.67    10.00     2.00                 3.67

请帮助我

我使用的查询

SELECT
tax_rates.name,                
(SUM(purchase_items.subtotal)) AS item_total_amount,
(SUM(purchase_items.item_tax)) AS item_tax_amount,
(SUM(purchases.grand_total) - SUM(purchases.order_tax)) AS total_amount,
(SUM(purchases.order_tax)) AS tax_amount
FROM tax_rates
LEFT JOIN purchases ON purchases.order_tax_id = tax_rates.id 
LEFT JOIN purchase_items ON purchase_items.tax_rate_id = tax_rates.id 
GROUP BY tax_rates.id
ORDER BY  tax_rates.name desc
LIMIT 0, 10

最佳答案

我解决了这个问题

SELECT
tax_rates.name,
purchase_item.subtotal AS item_total_amount,
purchase_item.item_tax AS item_tax_amount,
(purchases.grand_total - purchases.order_tax) AS total_amount,
purchases.order_tax AS tax_amount
FROM tax_rates
LEFT JOIN (SELECT a.order_tax_id, SUM(a.order_tax) as order_tax, SUM(a.grand_total) as grand_total FROM purchases AS a  GROUP BY a.order_tax_id) AS purchases ON purchases.order_tax_id = tax_rates.id    
LEFT JOIN (SELECT a.tax_rate_id, SUM(a.item_tax) as item_tax, SUM(a.subtotal) as subtotal FROM purchase_items AS a  GROUP BY a.tax_rate_id) AS purchase_item ON purchase_item.tax_rate_id = tax_rates.id
GROUP BY tax_rates.id
ORDER BY  tax_rates.name desc
LIMIT 0, 10

关于MYSQL - 多表连接和SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37064912/

相关文章:

python - 从列表中删除数字而不更改总和

javascript - 如何对列动态表中的值求和

以值为条件的 RowSums

MySQL连接比较: what's faster,什么是正确的?

MySQL 使用 AVG 和 STD 条件选择排除异常值的结果

php - 在 MySQL select 语句中合并 2 个表

php - 如何通过 FTP 安装具有 MySQL 数据库/登录的 PhpMyAdmin

python - 合并 3 个列表中的 3 个对应项

mysql - 使用 JOINS、ORDER BY 和数据透视表

php - 一个很好的教程,书籍或练习,供新手学习SQL命令以在php中创建论坛(或其他方法)?