Mysql 计算两个表中两个不同列之和的差

Mysql 计算两个表中两个不同列之和的差,mysql,Mysql,我有三个不同的表格,分别是出纳、销售和退款 收银台有: 收银员ID/收银员姓名 销售表包括: salesID/收银员ID/未收到的金额 退款表包括: 退款SID/出纳员ID/未经查询的金额 我想分别通过AmoUnreceived和AmoUnrefunded列显示收银员从销售和退款中收到的总金额。会有mysql语法吗?非常感谢 +1。比一个鼠标棒稍微多打我一点。(有趣的是,它甚至包括了相同的别名选择。):)先生,你介意我问这个问题吗?在你的小组中,哪一条是1和2,你这是什么意思?您是否将其与第一列

我有三个不同的表格,分别是出纳、销售和退款

收银台有:

收银员ID/收银员姓名

销售表包括:

salesID/收银员ID/未收到的金额

退款表包括:

退款SID/出纳员ID/未经查询的金额


我想分别通过AmoUnreceived和AmoUnrefunded列显示收银员从销售和退款中收到的总金额。会有mysql语法吗?非常感谢

+1。比一个鼠标棒稍微多打我一点。(有趣的是,它甚至包括了相同的别名选择。):)先生,你介意我问这个问题吗?在你的小组中,哪一条是1和2,你这是什么意思?您是否将其与第一列和第二列进行分组?@johntotetwoo
groupby 1,2
是SQL标准缩写,意思是
groupby,
,即在本例中与
groupby c.cashierID,c.cashier\u name
的含义完全相同。很多人不喜欢这个,但我发现它更容易阅读和维护。顺便说一句,你可以按你喜欢的顺序列出任意多的列号。我建议你测试一下你的查询,1个出纳,2个销售和1个退款。你会让他的退款翻倍。@piotrm是的,它将我的总金额乘以退款表中的行数。我想就是这个了!谢谢。但我可以问一个问题,COALESCE(字段1,0)的含义是什么?如果出纳没有卖出任何东西或什么也没有退回,则从左JOIN得到0而不是NULL。
select 
    c.cashierID,
    c.cashier_name,
    sum(s.amountReceived) as totalReceived,
    sum(r.amountRefunded) as totalRefunded
from CASHIER c
left join SALES s on s.cashierID = c.cashierID
left join REFUNDS r on r.cashierID = c.cashierID
group by 1,2
SELECT c.cashier_name AS cashier, 
    COALESCE( salesByCashier.totalSales, 0 ) AS sales,
    COALESCE( refundsByCashier.totalRefunded, 0 ) AS refunds,
    COALESCE( salesByCashier.totalSales, 0 ) - 
      COALESCE( refundsByCashier.totalRefunded, 0  ) AS total
FROM
  cashier c
LEFT JOIN
   ( SELECT s.cashierID AS cashierID, SUM(amountReceived) AS totalSales
     FROM sales s
     GROUP BY s.cashierID ) salesByCashier
ON c.cashierID = salesByCashier.cashierID
LEFT JOIN
   ( SELECT r.cashierID AS cashierID, SUM(amountRefunded) AS totalRefunded
     FROM refunds r
     GROUP BY r.cashierID ) refundsByCashier
ON c.cashierID = refundsByCashier.cashierID