2017-02-22 103 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