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
我认为这就是它!非常感谢。 但我可以问一个问题,什么是COALESCE(字段1,0)的含义? – mathan0690 2012-01-10 03:11:57
如果出纳员没有出售或没有返回任何东西,您将从LEFT JOIN获得0而不是NULL。 – piotrm 2012-01-10 03:14:10
好的。再次感谢! – mathan0690 2012-01-10 03:16:43