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

病気休暇を取ったかどうかに関係なく、病気休暇のあるすべての従業員の記録を表示する必要があり、病気休暇を取っていない場合はテーブルを離れます。したがって、従業員が病気休暇を取得したという記録しか取得できず、従業員の合計が休暇を取得した日数を合計する必要もあります。

助けてください、スタック オーバーフローに初めて投稿します。ありがとう。

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 に答える