조건 창의 검색 조건 결합 규칙(Visual Database Tools)

적용 대상:SQL Server

원하는 수의 AND 및 OR 연산자와 연결된 검색 조건을 포함하는 쿼리를 만들 수 있습니다. AND 및 OR 절이 조합된 쿼리는 복잡해질 수 있으므로 쿼리를 실행할 때 이러한 쿼리가 해석되는 방식과 이러한 쿼리가 조건 구역 SQL 창에 표시되는 방식을 이해하는 것이 좋습니다.

참고 항목

AND 또는 OR 연산자가 하나만 포함된 검색 조건에 대한 자세한 내용은 한 열에 여러 검색 조건 지정(Visual Database Tools)여러 열에 여러 검색 조건 지정(Visual Database Tools)을 참조하세요.

아래에서 다음 정보를 찾을 수 있습니다.

  • 둘 다 포함된 쿼리에서 AND 및 OR의 우선 순위입니다.

  • AND 및 OR 절의 조건이 논리적으로 서로 관련되는 방식.

  • AND 및 OR를 모두 포함하는 조건 창 쿼리에서 쿼리 및 뷰 디자이너가 나타내는 방식입니다.

아래의 설명을 쉽게 이해하기 위해 employee , hire_datejob_lvl열을 포함하는 status테이블을 가정해 봅니다. 이 예제에서는 사용자가 직원의 근무 연수(입사 날짜), 업무 유형(직급), 상태(예: 퇴직) 등의 정보를 알고 있어야 한다고 가정합니다.

AND 및 OR의 우선 순위

쿼리가 실행되면 먼저 AND와 연결된 절을 평가한 다음 OR로 연결된 절을 평가합니다.

참고 항목

NOT 연산자는 AND 및 OR보다 우선합니다.

예를 들어, 입사 날짜와 관계없이 하위 직급으로 5년 이상 근무한 직원이나 중간 직급의 직원을 찾으려면 다음과 같은 WHERE 절을 구성할 수 있습니다.

WHERE   
   hire_date < '01/01/95' AND   
   job_lvl = 100 OR  
   job_lvl = 200  

OR보다 AND의 기본 우선 순위를 재정의하려면 SQL 창의 특정 조건에 괄호를 배치할 수 있습니다. 괄호 안의 조건은 항상 먼저 평가됩니다. 예를 들어 하위 또는 중간 수준의 작업에서 5년 이상 회사에 근무한 모든 직원을 찾으려면 다음과 같은 WHERE 절을 생성할 수 있습니다.

WHERE   
   hire_date < '01/01/95' AND   
   (job_lvl = 100 OR job_lvl = 200)  

명확성을 위해 기본 우선 순위에 의존하는 대신 AND 및 OR 절을 결합할 때 항상 괄호를 포함하는 것이 좋습니다.

AND가 여러 OR 절을 사용하는 방법

AND 및 OR 절이 결합된 경우 어떻게 관련되는지 이해하면 쿼리 및 뷰 디자이너에서 복잡한 쿼리를 구성하고 이해하는 데 도움이 될 수 있습니다.

AND를 사용하여 여러 조건을 연결하는 경우 AND와 연결된 첫 번째 조건 집합이 두 번째 집합의 모든 조건에 적용됩니다. 즉 다른 조건에 AND로 연결된 조건은 둘째 집합에 있는 모든 조건에 분배됩니다. 예를 들어 다음 개략적인 표현은 OR 조건 집합에 연결된 AND 조건을 보여주고 있습니다.

A AND (B OR C)  

위의 표현은 AND 조건이 두 번째 조건 집합에 분산되는 방법을 보여 주는 다음 도식 표현과 논리적으로 동일합니다.

(A AND B) OR (A AND C)  

분배 법칙은 쿼리 및 뷰 디자이너를 사용하는 방법에 영향을 줍니다. 예를 들어, 직급이 낮거나 중간인 직원 중에서 근무 연수가 5년이 넘는 직원을 모두 찾는다고 가정해 봅니다. SQL 창의 문에 다음 WHERE 절을 입력합니다.

WHERE (hire_date < '01/01/95' ) AND   
   (job_lvl = 100 OR job_lvl = 200)  

AND와 연결된 절은 OR과 연결된 두 절에 모두 적용됩니다. 이를 표현하는 명시적 방법은 OR 절의 각 조건에 대해 AND 조건을 한 번 반복하는 것입니다. 다음 문은 이전 문보다 더 명시적이고 길지만 논리적으로 동일합니다.

WHERE    (hire_date < '01/01/95' ) AND  
  (job_lvl = 100) OR   
  (hire_date < '01/01/95' ) AND   
  (job_lvl = 200)  

연결된 OR 절에 AND 절을 배포하는 원칙은 관련된 개별 조건 수에 관계없이 적용됩니다. 예를 들어 회사에 5년 이상 근무했거나 퇴직한 상위 또는 중간급 직원을 찾고 싶다고 가정해 보겠습니다. WHERE 절은 다음과 같을 수 있습니다.

WHERE   
   (job_lvl = 200 OR job_lvl = 300) AND  
   (hire_date < '01/01/95' ) OR (status = 'R')  

AND로 연결된 조건이 분배된 후 WHERE 절은 다음과 같습니다.

WHERE   
   (job_lvl = 200 AND hire_date < '01/01/95' ) OR  
   (job_lvl = 200 AND status = 'R') OR  
   (job_lvl = 300 AND hire_date < '01/01/95' ) OR  
   (job_lvl = 300 AND status = 'R')  

다수의 AND 절과 OR 절을 조건 창에 나타내는 방법

쿼리 및 뷰 디자이너는 조건 구역의 검색 조건을 나타냅니다. 그러나 AND 및 OR와 연결된 여러 절이 포함된 경우 조건 창의 표현이 예상과 다를 수 있습니다. 또한 조건 창 또는 다이어그램 구역에서 쿼리를 수정하는 경우 입력한 것과 SQL 문이 변경된 것을 확인할 수 있습니다.

일반적으로 다음 규칙에 따라 조건 창에서 AND 절과 OR 절이 나타납니다.

  • AND와 연결된 모든 조건은 필터 약식 표 열 또는 동일한 Or... 열에 표시됩니다.

  • OR와 연결된 모든 조건은 별도의 Or... 열에 표시됩니다.

  • AND 및 OR 절 조합의 논리적 결과가 AND가 여러 OR 절에 분산되어 있는 경우 조건 창은 필요에 따라 AND 절을 여러 번 반복하여 이를 명시적으로 나타냅니다.

예를 들어 SQL 창에서 AND와 연결된 두 절이 OR과 연결된 세 번째 절보다 우선하는 다음과 같은 검색 조건을 만들 수 있습니다.

WHERE (hire_date < '01/01/95' ) AND   
  (job_lvl = 100) OR   
  (status = 'R')  

쿼리 및 뷰 디자이너는 다음과 같이 조건 창에서 이 WHERE 절을 나타냅니다.

OR clause precedence in the Criteria Pane

그러나 연결된 OR 절이 AND 절보다 우선하는 경우 AND 절은 각 OR 절에 대해 반복됩니다. 이렇게 하면 AND 절이 각 OR 절에 배포됩니다. 예를 들어, SQL 창에서 다음과 같은 WHERE 절을 만들 수 있습니다.

WHERE (hire_date < '01/01/95' ) AND   
  ( (job_lvl = 100) OR   
  (status = 'R') )  

쿼리 및 뷰 디자이너는 다음과 같이 조건 창에서 이 WHERE 절을 나타냅니다.

Multiple AND and OR clauses in the Criteria Pane

연결된 OR 절에 하나의 데이터 열만 포함된 경우 쿼리 및 뷰 디자이너는 전체 OR 절을 약식 표의 단일 셀에 배치할 수 있으므로 AND 절을 반복할 필요가 없습니다. 예를 들어, SQL 창에서 다음과 같은 WHERE 절을 만들 수 있습니다.

WHERE (hire_date < '01/01/95' ) AND   
  ((status = 'R') OR (status = 'A'))  

쿼리 및 뷰 디자이너는 다음과 같이 조건 창에서 이 WHERE 절을 나타냅니다.

Linked OR clauses defined in the Criteria Pane

쿼리를 변경하는 경우(예: 조건 창의 값 중 하나를 변경) 쿼리 및 뷰 디자이너는 SQL 창에서 SQL 문을 다시 만듭니다. 다시 생성된 SQL 문은 원래 문이 아닌 조건 창 표시와 유사합니다. 예를 들어, 분배된 AND 절이 조건 창에 있는 경우 SQL 창에는 명시적으로 분배된 AND 절로 문이 다시 만들어집니다. 자세한 내용은 이 항목의 앞부분에 있는 "여러 OR 절을 사용하는 방법 및 작동 방법"을 참조하세요.

참고 항목

검색 조건 지정(Visual Database Tools)