2015-07-13 40 views
0

獲得從2個表空數據我分別有2個表,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桌,我必須得到如下所示的2條記錄的輸出

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

查詢我寫的會給出輸出,而不是在角色名中的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 

請在這方面幫助我,以獲得如我所願的輸出。

在此先感謝

+1

這裏 –

回答

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

向我們顯示您的代碼。您必須使用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; 
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 
+0

顯示您的查詢的問題指出,結果*的*顯示「SE」當空而被通緝。你正在做相反的事情,填入需要空值的「SE」。 – WarrenT