2017-02-22 20 views
1

私は2つの異なるwhereステートメントを組み合わせ、両方の状況が発生したときに出力を得ようとしています。SQL multiple combine whereステートメント

SELECT j.project_id Matter_Primary_Key, 

    j.type_id, 
    l.name Role, 
    l.Tree_position, 
    j.user_id User_Primary_Key, 
    y.username, 
    tcont.name || ',' || tcont.first_name Assignee_Name, 
    j.assigned_on, 
    j.unassigned_on, 
    tproj.number_string Matter_Number, 
    tproj.name Plan_Name 
FROM j_proj_assignee j, 

    y_user y, 
    l_proj_assignee_type l, 
    t_project tproj, 
    t_contact tcont 
WHERE  j.unassigned_on IS NULL 

    AND (j.type_id = '93' AND y.username = 'XXX') 
    AND (j.type_id = '3010' AND y.username = 'YYY') 
    AND j.type_id = l.primary_key 
    AND j.user_id = y.primary_key 
    AND j.project_id = tproj.primary_key 
    AND y.contact_id = tcont.primary_key 

しかし、彼らは2つの異なるテーブルから引っ張っているので、私は()内の私のクエリの問題を抱えているが、私は唯一、両方のそれらの状況が適用されたレコードを求めています。私は結合ステートメントにする必要がありますか?

+1

あなたはおそらく2つの括弧の条件 – GurV

+0

間のORをしたい。また、*私は*参加を行う必要があります - あなたは以前の構文を使用してテーブルにすでに参加しています。常に明示的な結合構文を使用してください。 – GurV

+0

互換性のないデータベースタグを削除しました。実際に使用しているデータベースにタグを付けてください。 –

答えて

1

これらの2行は、同時に指定されたすべての用語を必要としているように表示されます。たとえば、type_idは93と同時に3010にすることはできません。

AND (j.type_id = '93' AND y.username = 'XXX') 
    AND (j.type_id = '3010' AND y.username = 'YYY') 

代わりに、それが動作するかどうかを確認するために、このような何かを試してみてください。

AND ((j.type_id = '93' AND y.username = 'XXX') OR (j.type_id = '3010' AND y.username = 'YYY')) 
+0

ヒントはありがとうございますが、私は両方の結果を一緒に組み合わせて取得することができる必要がありますか – confusedbeginner

+0

あなたはどのようにして参加しようとしているのか分かりません。現在指定されている方法では、各行に1つのj.type_idしか持たないので、何も返さないクエリが必要です。どのように複数のj.type_idがありますか? – dimab0

+0

は、@ dimab0のようにORを使用しないと結果をまとめていますか? – Shruti