【发布时间】:2014-01-29 17:01:28
【问题描述】:
如果其他地方已经讨论过这样的事情,我提前道歉,但如果有,我找不到它(我什至不知道如何搜索这样的事情)。我正在尝试加入两个表,“员工”和“离开”。我想列出“员工”表中的每个员工,并使用“休假”表中的休假数据填充报告,其中“休假日期”(休假表中的 bdate 列)大于 2014 年 1 月 1 日(或当年)。问题是不是每个员工都有休假数据,所以我发现正常的联接只会从那些实际有休假数据的员工那里获取数据。我认为我想要的是左连接,但我只从两个表中获取记录,两个表中都有该员工的实际数据(希望这是有道理的)。
Select bunch_of_columns, leave.bdate, SUM(leave.Vhours) as TotalVacationHours, SUM(leave.shours) as TotalSickHours
from employees
left join leave on employees.id=leave.id
where employees.user_active ='1' AND leave.BDate >= '2014-01-01'
group by employees.id
Order by employees.user_last
这会生成在“2014-01-01”之后有休假记录的个人的 ONE 记录。我想要员工表中的员工记录的完整列表,其中包含休假表中的可用数据(如果没有,则为空白),其中休假表中的“bdate”列大于新年。
我想要这个:
+-----+----------+---------------+---------------+--------------+
|ID | Name | Vacation Hrs | Sick Hrs | Date |
+-----+----------+---------------+---------------+--------------+
| 1 | Bob | 5 | 8 | 2014-01-01 |
| 2 | Lucy | NULL | NULL | NULL |
| 3 | Jerry | NULL | NULL | NULL |
| 4 | Dieter | 3 | 5 | 2014-01-08 |
| 5 | Sprockets| NULL | NULL | NULL |
+-----+----------+---------------+---------------+--------------+
不是这个:
+-----+----------+---------------+---------------+--------------+
| row | Name | Vacation Hrs | Sick Hrs | Date |
+-----+----------+---------------+---------------+--------------+
| 1 | Bob | 5 | 8 | 2014-01-01 |
| 4 | Dieter | 3 | 5 | 2014-01-08 |
+-----+----------+---------------+---------------+--------------+
【问题讨论】: