所以我想说我经营一家商店。在这家商店,我有六名员工。这些员工将每笔销售报告到MySQL数据库中。如果员工没有进行销售,他在本周内不会进入该系统。支付日到来,我需要根据销售情况计算出支付给每个人的费用:
Select Staff, count(Item_Sold) from Inventory where Sale_Date between '2013-05-02%' and '2013-05-08%' group by Staff;
我很可能会得到输出:
Staff Items_Sold
Aaron 6
Bob 2
Jeff 4
Karen 13
现在让我们假设我从来没有解雇任何人,而且工作人员总是保持不变。让我们说他们过去曾经做过销售。假设我想在每周报告中看到所有员工,无论他们是否进行任何销售。如何在不摆脱“日期”关联的情况下将其纳入我的查询中?即。
Staff Items_Sold
Aaron 6
Bob 2
Geraldo 0
Jeff 4
Karen 13
Mary 0
答案 0 :(得分:1)
您可以使用所谓的left join
。这是一个很好的解释:http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php
基本上,左连接将返回第一个表中的所有结果,无论天气如何,或者它们在第二个表中都有相关数据。
答案 1 :(得分:0)
如果你有一个单独的工作人员表(你应该),你可以使用LEFT JOIN
:
SELECT Staff.Name, count(Item_Sold)
FROM Staff
LEFT JOIN Inventory ON Staff.Name = Inventory.Staff
WHERE Sale_Date BETWEEN '2013-05-02%' AND '2013-05-08%'
GROUP BY Staff.Name