我有2个表,“EMPL
”和“REG
”:
我在NUM_EMPL
中有5个EMPL
条记录,在REG中我只有2条记录,但我还有5条记录。
我想做的是 显示这10条记录:
我怎么能这样做? 我尝试过:
SELECT ACM_ACT.NUM_EMPL, ACM_EMPL.NUM_EMPL AS AEMPL, ACM_EMPL.NOM_EMPL
FROM ACM_ACT CROSS JOIN ACM_EMPL
ORDER BY AEMPL, ACM_EMPL.NOM_EMPL
更多queries
但他们不能工作!
答案 0 :(得分:3)
使用FULL JOIN
:
SELECT ISNULL(E.NUM_EMPL,R.NUM_EMP) AS NUM_EMP,
E.NAME
FROM EMPL E
FULL JOIN REG R
ON E.NUM_EMPL = R.NUM_EMP
答案 1 :(得分:1)
首先在cte中捕获所有员工编号:
;WITH cte AS (SELECT NUM_EMPL FROM EMPL UNION SELECT NUM_EMPL FROM REG)
SELECT cte.NUM_EMPL, EMPL.NAME
FROM cte
LEFT OUTER JOIN EMPL ON cte.NUM_EMPL = EMPL.NUM_EMPL
答案 2 :(得分:1)
Dave.Gugg 答案的小修正
;WITH cte
AS
(
SELECT NUM_EMPL FROM EMPL
UNION
SELECT NUM_EMPL FROM REG
)
SELECT cte.NUM_EMPL,
Case when EMPL.NAME is Null then '-----' else EMPL.NAME end as Name
FROM cte
LEFT OUTER JOIN EMPL ON cte.NUM_EMPL = EMPL.NUM_EMPL