0

我有 3 张桌子,分别是员工、配额和休假。我希望我的查询显示员工表中的所有记录。3个表主键作为ID

employee
----------------
emp ID|name
----------------
1     |emp 1
2     |emp 2
3     |emp 3
4     |emp 4
----------------

quota
-----------------------
emp ID|leave type|quota
-----------------------
1     |annual    |5
1     |sick      |14
2     |annual    |4
2     |sick      |14
3     |annual    |3
3     |sick      |14
4     |annual    |2
4     |sick      |14
----------------------

leave
---------------------------------
emp ID|leave type  |date     |day
---------------------------------
1     |annual      |22-5-2013|0.5
2     |sick        |22-5-2013|1.0
1     |sick        |24-5-2013|1.0
1     |sick        |25-5-2013|1.0
---------------------------------

My expected result:
--------------------------------------------
emp ID|name |leave type|quota|date     |day
--------------------------------------------
1     |emp 1|sick      |14   |24-5-2013|2.0
2     |emp 2|sick      |14   |22-5-2013|1.0
3     |emp 3|sick      |14   |null     |null
4     |emp 4|sick      |14   |null     |null
--------------------------------------------

我需要显示所有带病假的员工记录是否已经休过病假,如果没有休病假,则请假表,里面没有记录。所以我只能得到员工请病假的记录,我还需要合计员工总共请假的天数。

请帮忙,我是第一次在 Stack Overflow 上发帖。谢谢。

4

1 回答 1

1
$query="select emp.empId, emp.name, q.leavetype, q.quota, l.date, l.day from employee as emp inner join quota as q on emp.empId = q.empId and q.leavetype = 'sick' inner join leave as l on l.empId = emp.empId and l.leavetype = 'sick'";

或者

这个会给你想要的输出

select e.id, e.name, q.leavetype, q.quota, le.date, le.day from emp as e inner join quota as q on e.id = q.empId left join emp_leave as le on e.id = le.empId and le.leavetype='sick'
于 2013-07-25T07:27:37.143 回答