반응형
SELECT dc.*, c.t3_ID_FK FROM test.t1 dc
JOIN test.t2 c ON dc.t2_ID_FK = c.t2_ID
WHERE t3_ID_FK IN (select mm.t3_ID from test.t3 mm where mm.t3_PARENT_ID IN (select m2.t3_ID from test.t3 m1 LEFT OUTER JOIN test.t3 m2 ON m1.t3_ID = m2.t3_PARENT_ID
where m1.t3_ID = 116))
SELECT dc.*, c.t3_ID_FK
FROM test.t1 dc
JOIN test.t2 c ON dc.t2_ID_FK = c.t2_ID
JOIN test.t3 mm ON dc.t3_ID_FK = mm.t3_ID
JOIN test.t3 m2 ON mm.t3_PARENT_ID = m2.t3_ID
WHERE m2.t3_PARENT_ID = 116;
원래의 복잡한 쿼리를 간단화하는 과정은 다음과 같다:
1. 기본 테이블과 조인을 식별: 먼저 원래 쿼리에서 사용되는 기본 테이블과 조인하는 테이블 식별
원래 쿼리에서는 `test.t1`, `test.t2`, 그리고 `test.t3` 테이블 사용
2. 조인 조건 정의: 다음으로, 이러한 테이블 간의 관계를 파악하고, 조인 조건 정의
원래 쿼리에서는 `t1`과 `t2` 테이블 간의 조인은 `t2_ID_FK` 필드 사용, `t1`과 `t3` 테이블 간의 조인은 `t3_ID_FK` 필드 사용
3. 서브쿼리 해제:
원래 쿼리에서는 서브쿼리를 사용하여 `t3_ID`, 선택 이 부분을 해결하기 위해 `t3_PARENT_ID`와 조인하여 필요한 데이터를 직접 선택하도록 변경
4. 단순화된 쿼리 작성: 조인을 사용하여 필요한 데이터를 선택하는 단순화된 쿼리 작성
이 경우, `t1`과 `t2` 테이블은 기존과 같이 조인하며, `t3` 테이블과도 조인합니다. 그런 다음 `t3`와 `m2` 테이블을 조인하여 `t3_PARENT_ID`가 116인 경우의 데이터 선택
반응형
'Backend > DB 실무' 카테고리의 다른 글
[Mybatis] Mybatis VS JPA (0) | 2024.02.20 |
---|---|
Insert문 (0) | 2024.02.19 |
02/16 (0) | 2024.02.16 |
[Mybaytis] Mybatis에러 (0) | 2024.01.11 |
01/09 회고 (0) | 2024.01.09 |