1

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

现在让我们假设我从未解雇过任何人,而且员工始终保持不变。还可以说他们过去曾进行过销售。假设我想在我的每周报告中查看所有员工,无论他们是否进行了任何销售。在不消除“日期”相关性的情况下,我如何将其放入我的查询中?IE

Staff       Items_Sold
Aaron       6
Bob         2
Geraldo     0
Jeff        4
Karen       13
Mary        0
4

2 回答 2

1

您可以使用所谓的 a left join。这是一个很好的解释:http ://www.tizag.com/mysqlTutorial/mysqlleftjoin.php

基本上,无论天气如何,左连接都会返回第一个表中的所有结果,或者第二个表中是否有相关数据。

于 2013-08-12T15:33:59.353 回答
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
于 2013-08-12T15:36:25.970 回答