sql - 列出所有具有休假职称的员工,并在加入中申请休假
问题描述
我有三张桌子:
表一:员工
emp_id -KEY emp_name emp_join_date
1841 test 2016-04-01
1842 test1 2019-04-01
表 2:leave_set
emp_id-KEY start_date end_date nod leave_type_id
1841 2019-04-01 2019-04-02 2 2
表 3:leave_type
leave_type_id-KEY leave_title
1 AL
2 SL
3 CME
我尝试了左连接,但如果leave_set
没有值,则它在Leave_Set
and中返回空值leave_type
。
SELECT
O.emp_id,
P.leave_title, I.leave_type_id, I.nod
FROM
employee O
LEFT JOIN
leave_set I ON O.emp_id = I.emp_id and o.emp_id=1841
LEFT OUTER JOIN
leave_type P ON P.leave_type_id = I.leave_type_id
我的输出如下所示:
emp_id leave_title nod
1841 NULL NULL
1879 NULL NULL
我需要如下输出:
emp_id Leave_title nod
1841 AL -
1841 SL 2
1841 CME -
1842 AL -
1842 SL -
1842 CME -
我需要每个员工都leave_title
知道nod
他们是否申请leave_set
。
解决方案
我认为你想要一个cross join
withleave_type
因为你想要所有的组合。后面是left join
实际的休假记录,例如
select O.emp_id, P.leave_title, I.leave_type_id, I.nod
from employee O
cross join leave_type P
left join leave_set I ON O.emp_id = I.emp_id and I.leave_type_id = P.leave_type_id
where o.emp_id = 1841
PS:您通常会在where
条款中限制有问题的员工,而不是join
.
推荐阅读
- datetime - 使用 NSIS 包时安装期间的年龄限制
- c# - 我想显示用户输入的特定时间范围内可用的所有汽车
- security - 如何为我的 golang 应用程序获取 SSL 证书?
- python - 查找具有最高值的键值
- python - python 3不支持子列表参数
- react-native - 在第一次安装应用程序时,即使关闭了一段时间,抽屉按钮也可以点击
- typescript - 如何使用带有 jQuery 实时事件表示法的打字稿
- go - 如何正确将 999999999.99999999 转换为整数
- angular - 如何解决错误:找不到模块“。” 在离子 3 中?
- google-apps-script - 例外:活动开始时间必须早于活动结束时间。(第 15 行,文件“CreateEvent”)通过 Google Apps 脚本将事件添加到日历时出错