【发布时间】:2019-09-10 06:15:15
【问题描述】:
我有三张桌子:
表 1:员工
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 和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。
【问题讨论】:
-
@DaleBurrell 示例数据已更新..
-
@Dolubolu 问题是如果 Leave_Set 没有一行,那么你就无法获得 nod 或 leave_title 因为该表用于连接 3 个表。
标签: sql sql-server join inner-join outer-join