如何通过加入

时间:2015-07-13 12:31:24

标签: sql database

我分别有两个表,emp_data,role_data

EMP_DATA

ID    EMPID  EMPNAME ROLEID
1      A01    ABC      1
2      A01    ABC      3

ROLE_DATA

ROLEID ROLENAME EMPID
 1     SE        A01
 2     SSE       B01

当我加入这两个表时,我必须得到输出2个记录,如下面的

EMPID EMPNAME ROLEID ROLENAME
A01    ABC      1      SE
A01    ABC      3      <NULL OR EMPTY>

我写的查询将给出输出,而不是在rolename中为null,它给了我SE。

SELECT ED.EMPID,ED.EMPNAME,ED.ROLEID,RD.ROLENAME 
FROM SYN.EMP_DATA ED,SYN.ROLE_DATA RD 
WHERE ED.EMPID=RD.EMPID

请在这方面帮助我如何获得我想要的输出。

提前致谢

3 个答案:

答案 0 :(得分:3)

您需要left join

select e.EMPID, e.EMPNAME, e.ROLEID, r.ROLENAME
from EMP_DATA e left join
     ROLE_DATA r
     on e.ROLEID = r.ROLEID;

顺便说一句,您的问题表明您的数据库存在问题。 EMP_DATA.ROLEID应声明为引用ROLE_DATA的外键。如果是这样,插入无效值将是错误的。

答案 1 :(得分:1)

告诉我们你的代码。你必须使用LEFT JOIN

SELECT emp.EMPID
    ,emp.EMPNAME
    ,emp.ROLEID
    ,ROLE.ROLENAME
FROM EMP_DATA as emp
LEFT JOIN ROLE_DATA as ROLE ON emp.ROLEID = ROLE.ROLEID;

答案 2 :(得分:1)

尝试此查询

select a.EMPID, a.EMPNAME, a.ROLEID,IFNULL(b.ROLENAME, 'SE') as ROLENAME
from EMP_DATA a
lef join ROLE_DATA b on a.ROLEID=B.ROLEID