2014-01-17 2 views
0

&과 SQL을 어떻게 결합 할 수 있습니까? 아래 쿼리에서, 나는 NOT NULL 값으로 'APPROVALTYPE을'이 그 '승인'할 수있는 모든 값 또는 daction과 '거부'하는 조건 문 daction이 필요합니다 아래 또는 Oracle SQL에서 & AND

내 쿼리입니다 :

SELECT WorkflowHistory.*, 
     Reason.Reason, 
     ApprovalType.ApprovalType 
FROM WorkflowHistory WorkflowHistory, 
     Reason Reason, 
     ApprovalType ApprovalType 
WHERE UPPER(dDocName) = UPPER('D_1188259') 
AND xDocApproval = ApprovalType.ApprovalTypeID(+) 
AND daction like 'Reject' 
OR (daction ='Approve' 
AND APPROVALTYPE IS NOT NULL); 

도와주세요.

답변

2

이 방법

SELECT WorkflowHistory.*, 
Reason.Reason, 
ApprovalType.ApprovalType 
FROM WorkflowHistory WorkflowHistory, 
Reason Reason, 
ApprovalType ApprovalType 
WHERE UPPER(dDocName) = UPPER('D_1188259') 
AND xDocApproval  = ApprovalType.ApprovalTypeID(+) 
AND (daction   like 'Reject' 
      OR (daction ='Approve' AND APPROVALTYPE IS NOT NULL)); 
1

괄호를 사용 :

AND 
(
    daction = 'Reject' 
OR 
    (daction ='Approve' AND ApprovalType.ApprovalType IS NOT NULL) 
) 

이 당신에게 승인 유형 플러스 모두 거부를 모두 승인을 제공합니다.

그러나 조인을 확인하십시오. 세 개의 테이블이 있지만 모든 테이블에 조인이 표시되지 않습니다. 이것은 의도적으로 (원하는 크로스 조인) 가능할 수 있지만 더 잘 확인하십시오. (우연한 크로스 조인을 피하고 읽기가 능성을 높이기 위해 ANSI 조인 구문을 사용하는 것이 더 좋습니다.) daction이나 dDocName도 테이블 ApprovalType에 있다고 생각하지 않습니까? 그렇지 않으면 외부 조인이 중단됩니다. 둘 이상의 표를 사용하여 작업 할 때 한정자를 사용하여 입력란의 출처를 표시합니다. 다시 오류를 방지하고 가독성을 높이기 위해 다시 입력하십시오. 내 5c :-)

관련 문제