【问题标题】:sum two different table and the subtract its total将两个不同的表相加并减去其总数
【发布时间】:2013-09-09 17:12:38
【问题描述】:

我有这个问题,关于如何从两个不同的表中求和总值,然后在得到它的总值后我想减去它。例如,我有表“rsales”和“sales”,下面有这些 ff vlue。

来自“rsales”的数据

id | total | pcode |
1  | 100   | 2143  |
2  | 100   | 2143  |
3  | 50    | 2222  |
4  | 50    | 2222  |

来自“销售”的数据

id | total | pcode |
7  | 100   | 2143  |
8  | 50    | 2222  |

我的问题是这样的。我想通过 pcode 对销售中的所有“总”值求和,并从 rsales 组中求和“总”值。然后在得到它的总和后,我想减去它。我的页面一定是这样的。

   total    pcode
 | 100    | 2143  |
 | 50     | 2222  |

我有这个 ff 代码,但它不适合我

sql "select sum(rsales.total)- sum(sales.total) as t1 where pcode = rsales.pcode"

【问题讨论】:

  • 您使用的哪个查询不起作用?
  • @ExplosionPills 我猜是缺少FROM 子句的那个...

标签: php mysql


【解决方案1】:

用途:

SELECT 
    SUM(r.total)-(
                   SELECT SUM(s.total) 
                   FROM sales AS s WHERE r.pcode=s.pcode
                  ) as total, 
    r.pcode 

    FROM rsales AS r 

    GROUP BY r.pcode;

输出:

+--+--+--+--+--+-
| total | pcode |
+--+--+--+--+--+-
| 100   | 2143  |
| 50    | 2222  |
+--+--+--+--+--+-
2 rows in set

【讨论】:

  • 我认为JOIN 也应该可以工作,但考虑到未知因素,子查询似乎更安全。
  • 不知道,但看起来应该可以。 (我不是提问者。)
【解决方案2】:

你尝试过这样的事情吗?

SELECT
    SUM(L.total) as lTotal, SUM(R.total) as rTotal
FROM
    sales L
INNER JOIN rsales R 
    ON
        R.pcode = L.pcode
GROUP BY L.pcode

如果您从两个表中获得预期值,您可以轻松地在 FROM 子句中添加加法和减法。

【讨论】:

    【解决方案3】:

    执行此操作不需要任何连接。如果某些 pcode 仅在一个表中,则此解决方案有效:

    select SUM(total), pcode from (
            select sum(total) as total, pcode from rsales group by pcode
        union all
            select SUM(-total) as total, pcode from sales group by pcode) salesTables
     group by pcode
    

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多