2016-11-20 61 views
1

需要幫助來創建SQL查詢。有點困惑,所以問問題。這裏的情況是:使用OR子句SQL查詢

我有一個表說EmpInfo: EmpFirstName, EmpLastName, EmpID, EmpGender, EmpDOB, EmpAddress 表2 EmpMasterID: EmpID1, EmpId2, AbsoluteEmpID

EmpInfo包含樣本數據:

EmpFirstName | EmpLastName | EmpID | EmpGender | EmpDOB | EmpAddress 
First1  | Last1  | 10 | M  | 1/1/92 | Addr1 
First2  | Last2  | 20 | F  | 1/12/92 | Addr2 
First3  | Last3  | 30 | F  | 1/12/94 | Addr3 
First4  | Last4  | 40 | M  | 1/2/94 | Addr4 
First5  | Last5  | 60 | M  | 1/1/91 | Addr5 
First6  | Last6  | 70 | F  | 1/12/92 | Addr6 
First7  | Last7  | 80 | F  | 1/12/95 | Addr7 
First8  | Last8  | 90 | M  | 1/2/97 | Addr8 

EmpMasterID樣本數據:

EmpID1 | EmpId2 | AbsoluteEmpID 
10  | 20 | 10 
60  | 70 | 60 

現在我必須加入這兩個表格得到下列:

EmpID, EmpFirstName, EmpLastName, AbsoluteEmpID

AbsoluteEmpID的值會從EmpMasterID表被拾起如果EmpInfo.EmpID = EmpMasterID.EmpID1 OR EmpInfo.EmpID = EmpMasterID.EmpID2 否則AbsoluteEmpID的值將EMPID本身。

請幫忙。

謝謝。

+0

你的意思是,如果EmpInfo.EmpID = EmpMasterID.EmpID1 OR EmpInfo.EmpID = EmpMasterID.EmpID2? – scaisEdge

+0

正確 - 這是一個錯字...感謝您提問 –

+0

如果EmpInfo.EmpID與EmpMasterID.EmpID1在一行上匹配,並且在不同行上匹配EmpMasterID.EmpID2,並且AbsoluteEmpID值在那些行上不同兩排? –

回答

0

應根據內部聯接

update EmpInfo 
INNER JOIN EmpMasterID On (EmpInfo.EmpID = EmpMasterID.EmpID1 
          OR EmpInfo.EmpID = EmpMasterID.EmpID2) 
SET EmpID = AbsoluteEmpID 
0

爲什麼你不只是要這個?

SELECT ei.EmpID, ei.EmpFirstName, ei.EmpLastName, em.AbsoluteEmpID 
FROM EmpMasterID em JOIN 
    EmpInfo ei 
    ON ei.EmpID = ei.AbsoluteEmpID; 

我看不出什麼OR與此查詢有關。

1

這將加入EmpID1EmpID2。如果兩個失敗,left join確保您獲得與null一排,然後你只需更換nullempid

select ei.EmpID, 
     ei.EmpFirstName, 
     ei.EmpLastName, 
     isnull(em.AbsoluteEmpID, ei.EmpID) as AbsoluteEmpID 
from EmpInfo ei 
left join EmpMasterID em on ei.empid = em.EmpID1 or ei.empid = em.EmpID2 
+0

非常感謝..這工作.. –