2011-08-10 22 views
1

私はSQLクエリを書く際に問題があります。ここに私の問題のイラストがあります。 次のように、私は、データベース内の2つのテーブルを有する:上記INNER JOIN SQLクエリのIF条件

| Table A |   | Table B  | 

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

それらのテーブルが関連しています。 表BidReference表AidPriorityを参照しています。 BUTidPriorityの値がNULL ある場合、idReferenceidTableAを参照すべきです。皆さんがイラストを手にして、この問題の解決に役立つことを願っています。あらかじめ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 

シングルの参加方法、2 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)