2017-02-22 1 views
1

두 개의 다른 where 문을 결합하여 두 상황이 모두 발생할 때 출력을 얻으려고합니다.SQL 다중 결합 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 

하지만 안에 내 쿼리에 문제가있어()가 두 개의 서로 다른 테이블에서 끌어하고 있지만 난 단지 모두 이러한 상황이 적용되는 기록을 원하기 때문에. Join 문이 필요합니까?

+1

을 당신은 아마 두 괄호 조건 사이에 OR을 원하는 – 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

OR을 사용하지 않았거나 @ dimab0 언급 한 결과를 함께 결합? – Shruti