2011-08-10 163 views
1

我在編寫sql查詢時遇到了問題。這是關於我的問題的插圖。 我在數據庫中具有2個表如下:INNER JOIN中的IF條件SQL查詢

| Table A |   | Table B  | 

| idTableA |   | idTableB | 
| idPriority |   | idReference | 

上述那些表是相關的。 id參考 in 表B是指idPriority表ABUT如果idPriority的值是NULL ,則idReference應該是指idTableA。希望你們能夠獲得插圖並且可以幫助我處理這個問題。 Thx提前。

+0

THX的傢伙。我有想法從你的答案中解決這個問題。多謝 ! – Andha

回答

2

雙連接方法,便於閱讀

select 
    B.idTableB, 
    isnull(A1.idPriority, A2.idTableA) as RefValue 
from 
    TableB as B 
    left join TableA as A1 on A1.idPriority = B.idReference 
    left join TableA as A2 on A1.idTableA = B.idReference 

單連接方法,二IsNulls()的:

select 
    B.idTableB, 
    isnull(A1.idPriority, A1.idTableA) as RefValue 
from 
    TableB as B 
    left join TableA as A1 on isnull(A1.idPriority, A1.idTableA) = B.idReference 
1

下面的構造會爲你工作嗎?

select * 
from tableA join tableB on (join condition) 
where (idpriority is not null) 
union 
select * 
from tableA join tableB on (join condition) 
where (idpriority is null) 
1
select * 
from tableB b 

join tableA a 
on 
    a.idPriority = b.idReference 
    or 
    (a.idPriority IS NULL AND b.idReference = a.idTableA)