2017-02-22 108 views
1

我期待結合兩個不同的where語句,並在兩種情況發生時獲得輸出。SQL多結合語句

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 

但我有我的內查詢問題(),因爲他們是從兩個不同的表中獲取,但我只想在那裏這兩個情況下都適用的記錄。我需要加入聲明嗎?

+1

你可能需要一個或兩個括號內的條件之間 – GurV

+0

此外,*我需要做一個加入* - 你已經使用舊的語法加入表格。始終使用顯式連接語法。 – GurV

+0

我刪除了不兼容的數據庫標籤。請標記您真正使用的數據庫。 –

回答

1

這兩行讀取就像您要求同時指定所有的術語。例如,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

也許我不明白你打算如何加入。按照當前指定的方式,每行只有一個j.type_id - 所以我希望您的查詢不返回任何內容。怎麼能有多個j.type_id? – dimab0

+0

不會使用或像@ dimab0提到的結合在一起的結果? – Shruti