SQL Server 데이터베이스 플러그 인 을 사용 하여 조회 하 는 방법

많은 SQL 서버 프로 그 래머 는 하위 쿼 리(subqueries)의 사용 에 대해 곤 혹 스 러 워 한다.특히 하위 쿼 리(즉 하위 쿼 리 에 하위 쿼 리 포함)를 포함한다.이제 이 문 제 를 근원 적 으로 탐구 합 시다.  두 개의 피 드 조회 유형 이 있 습 니 다.표준 과 관련 이 있 습 니 다.표준 하위 조 회 를 한 번 실행 하고 결 과 는 부모 에 게 되 돌려 줍 니 다.관련 하위 조 회 는 줄 마다 한 번 씩 실행 되 며,부모 가 조회 하여 찾 습 니 다.본문 에서 나 는 포 함 된 하위 조회(nested)에 중점 을 두 고 토론 할 것 이다. subqueries)(나중에 관련 하위 조 회 를 소개 하 겠 습 니 다).  이 문 제 를 생각해 보 세 요.당신 은 와셔 를 파 는 판매원 목록 을 만 들 고 싶 습 니 다.당신 이 필요 로 하 는 데 이 터 는 네 개의 표 에 분산 되 어 있 습 니 다.인원,연락처(Person.Contact),인적자원,직원(Human Resource.Employee),판매,판매 주문서 제목(Sales.SalesOrderHeader),판매,판매 주문서 상세 정보(Sales.SalesOrderDetail).SQL 서버 에 서 는 내 압 식(outside-in)에서 프로그램 을 쓰 지만 외 압 식(inside-out)부터 고려 하 는 것 이 매우 도움 이 됩 니 다.즉,필요 한 문 구 를 한 번 에 해결 할 수 있 습 니 다.  내부 에서 외부 로 쓰 면 Sales.SalesOrderDetail 표를 검사 하고 LIKE 구문 에 제품 수(ProductNumber)값 을 일치 시 킬 수 있 습 니 다.이 줄 들 을 Sales.SalesOrderHeader 표 와 연결 하면 영업 사원 ID(Sales PersonIDs)를 얻 을 수 있 습 니 다.그리고 SalesPersonID 를 사용 하여 SalesPersonID 표를 연결 합 니 다.마지막 으로 ContactID 로 Person.Contact 표를 연결 합 니 다. 

USE AdventureWorks ; 
GO 
SELECT DISTINCT c.LastName, c.FirstName  
FROM Person.Contact c JOIN HumanResources.Employee e 
ON e.ContactID = c.ContactID WHERE EmployeeID IN  
(SELECT SalesPersonID  
FROM Sales.SalesOrderHeader 
WHERE SalesOrderID IN  
(SELECT SalesOrderID  
FROM Sales.SalesOrderDetail 
WHERE ProductID IN  
(SELECT ProductID  
FROM Production.Product p  
WHERE ProductNumber LIKE'FW%'))); 
GO 
이 예 는 SQL 과 관련 된 것 을 밝 혔 다. 서버 의 몇 가지 절묘 한 일.SELECT 대신 IN()매개 변 수 를 사용 할 수 있 음 을 발견 할 수 있 습 니 다. 어구이 예 에서 두 번 의 응용 이 있 기 때문에 새 겨 진 하위 조 회 를 만 들 었 습 니 다.  나 는 터 무 니 없 는 길 이 를 받 아들 이지 않 음 에 도 불구 하고 표준화(normalization)의 마니아 이다.표준화 가 각종 조 회 를 가지 기 때문에 복잡성 을 증가 시 켰 다.이런 상황 에서 한꺼번에 조회 하 는 것 은 매우 유용 해 보이 고,끼 워 넣 는 서브 조회 도 더욱 유용 하 다.  필요 한 문제 가 많은 표 에 분산 되 어 있 을 때,그것들 을 다시 한데 묶 어야 한다.이 때,플러그 인 서브루틴 이 매우 유용 하 다 는 것 을 발견 할 수 있다.

좋은 웹페이지 즐겨찾기