显示不存在相关数据的列中的所有值

时间:2013-08-12 15:30:59

标签: mysql

所以我想说我经营一家商店。在这家商店,我有六名员工。这些员工将每笔销售报告到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

2 个答案:

答案 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