2011-10-28 12 views
1

を考えると、次のSQLのテーブルであることができますSQLは、共通IDを持つ2つのテーブルを比較したが、表2のIDが2つの異なる列に

管理者:

id Name rating 
1 Jeff  48 
2 Albert 55 
3 Ken  35 
4 France 56 
5 Samantha 52 
6 Jeff  50 

ミーティング:

id originatorid Assitantid 
1    3    5 
2    6    3 
3    1    2 
4    6    4 

私はケンの視点(id = 3)からテーブルを生成したいので、彼のIDはミーティングのテーブルの2つの異なるカラムに存在する可能性があります。 (私は2つの異なるフィールド列を導入しているので、文INは機能しません)。

したがってouputを次のようになります。

id originatorid Assitantid 
1    3    5 
2    6    3 

答えて

4

あなたは本当にただあなただけORを必要とし、ケンのIDがどの列を参照する必要がある場合。以下は、あなたの出力例を正確に生成します。あなたの参加ON句に

SELECT * FROM Meetings WHERE originatorid = 3 OR Assistantid = 3; 

あなたが会議に伴って複雑なルートやリストの名前を取る必要がある場合は

ORはここに動作するはずです:私は疑問を持っている

SELECT 
    Administrators.name, 
    Administrators.id, 
    Meetings.originatorid, 
    Meetings.Assistantid 
FROM Administrators 
    JOIN Meetings 
    ON Administrators.id = Meetings.originatorid 
    OR Administrators.id = Meetings.Assistantid 
Where Administrators.name = 'Ken' 
+0

。 ORと組み合わせた "IN"セレクタを使う方法はありますか?この場合は..ではなく、中央に追加のテーブルがある場合:管理者+会議+ルーム(学習目的のため)。 –

+0

私のコメントは明確ではありません私はこれについて別の質問をする必要があると思います。 –

+0

@ user903645 'IN()'は、単一の列を複数の可能な許容値と比較することを意図しています。複数の列に強制する唯一の方法は、複雑な結合やUNIONクエリを使用して複数の列の内容を1つに変換することです。 –

関連する問題