[sql] 프로시저 호출 시 테이블 조인 및 필터링 처리 방법

SQL 프로시저를 사용하여 여러 테이블을 조인하고 필터링하는 방법을 살펴보겠습니다.

1. INNER JOIN을 사용한 테이블 조인

INNER JOIN은 두 테이블의 공통된 값에 대해 조인하는 방법입니다. 아래는 INNER JOIN을 사용하여 두 개의 테이블을 조인하는 예시입니다.

SELECT *
FROM 테이블1
INNER JOIN 테이블2 ON 테이블1.공통된칼럼 = 테이블2.공통된칼럼

위의 예시에서 테이블1테이블2는 조인할 테이블 이름이며, 공통된칼럼은 두 테이블에서 공유하는 칼럼입니다. *는 모든 열을 반환하는 것을 의미합니다.

2. WHERE 절을 사용한 필터링

조인된 결과에서 특정 조건을 만족하는 행을 필터링하려면 WHERE 절을 사용합니다. 예를 들어, 아래의 코드는 조인된 결과에서 테이블1칼럼A가 10보다 크고 테이블2칼럼B가 ‘조건’인 경우를 필터링하는 예시입니다.

SELECT *
FROM 테이블1
INNER JOIN 테이블2 ON 테이블1.공통된칼럼 = 테이블2.공통된칼럼
WHERE 테이블1.칼럼A > 10 AND 테이블2.칼럼B = '조건'

위의 예시에서 칼럼A칼럼B는 각각 테이블1테이블2의 열 이름입니다. ‘>’와 ‘=’ 기호는 비교 연산자를 나타내며, ‘AND’는 두 개의 조건을 모두 만족하는 것을 의미합니다.

3. 예외 처리를 위한 IF 문 사용

프로시저 내에서 조인 결과의 예외 처리를 위해 IF 문을 사용할 수 있습니다. IF 문을 사용하여 조건에 따라 다른 로직을 수행할 수 있습니다. 예를 들어, 아래의 코드는 테이블1테이블2를 조인하고, 조건에 맞는 행이 없는 경우 ‘조건을 만족하는 데이터가 없습니다.’라는 메시지를 출력하는 예시입니다.

DECLARE @count INT

SELECT COUNT(*)
INTO @count
FROM 테이블1
INNER JOIN 테이블2 ON 테이블1.공통된칼럼 = 테이블2.공통된칼럼
WHERE 테이블1.칼럼A > 10 AND 테이블2.칼럼B = '조건'

IF @count = 0
BEGIN
    PRINT '조건을 만족하는 데이터가 없습니다.'
END

위의 예시에서 @count는 COUNT 함수를 사용하여 조건에 해당하는 행의 개수를 저장하는 변수입니다. IF 문의 조건에 따라 메시지를 출력하게 됩니다.

결론

SQL 프로시저 내에서 테이블 조인 및 필터링을 처리하는 방법을 알아보았습니다. INNER JOIN을 사용하여 테이블을 조인하고, WHERE 절을 사용하여 필터링하며, IF 문을 사용하여 예외 처리를 할 수 있습니다. 이러한 기능들을 조합하여 다양한 복잡한 쿼리를 처리할 수 있습니다.

참고 자료