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 문을 사용하여 예외 처리를 할 수 있습니다. 이러한 기능들을 조합하여 다양한 복잡한 쿼리를 처리할 수 있습니다.