행위정보 조인 로직 개선: 미조치 상태 필터링 방식 최적화 및 쿼리 간소화 적용

dev
박성영 2 months ago
parent 1f171ab4ee
commit e1e9d67f1d

@ -193,24 +193,12 @@
INNER JOIN TB_IMPLT_INFO ii ON iti.IMPLT_INFO_ID = ii.IMPLT_INFO_ID AND ii.DEL_YN = 'N'
INNER JOIN tb_crdn c ON ii.CRDN_YR = c.CRDN_YR AND ii.CRDN_NO = c.CRDN_NO AND c.DEL_YN = 'N'
INNER JOIN tb_pstn_info p ON p.CRDN_YR = c.CRDN_YR AND p.CRDN_NO = c.CRDN_NO AND p.DEL_YN = 'N'
/* 중요로직: 조치처리상태 확인을 위한 행위정보 조인 - 미조치 건만 조회 */
INNER JOIN (
SELECT
CRDN_YR,
CRDN_NO,
COUNT(1) as ACT_ALL_CNT,
SUM(CASE WHEN ACTN_PRCS_STTS_CD = '3' THEN 1 ELSE 0 END) as ACT_COMPLT_CNT
FROM tb_act_info
WHERE DEL_YN = 'N'
GROUP BY CRDN_YR, CRDN_NO
) act_cnt ON act_cnt.CRDN_YR = c.CRDN_YR AND act_cnt.CRDN_NO = c.CRDN_NO
INNER JOIN tb_act_info act ON act.CRDN_YR = c.CRDN_YR AND act.CRDN_NO = c.CRDN_NO AND act.DEL_YN = 'N' AND act.ACTN_PRCS_STTS_CD != '3'
-- 코드성 데이터 조인
LEFT JOIN tb_cd_detail impltTrprSe ON impltTrprSe.CD_GROUP_ID = 'IMPLT_TRPR_SE_CD' AND impltTrprSe.CD_ID = iti.IMPLT_TRPR_SE_CD
LEFT JOIN tb_cd_detail sggCd ON sggCd.CD_GROUP_ID = 'SGG_CD' AND sggCd.CD_ID = iti.SGG_CD
WHERE iti.IMPLT_INFO_ID = #{schImpltInfoId}
AND iti.DEL_YN = 'N'
/* 중요로직: 조치처리상태가 미조치(1)인 건만 조회 - 행위정보가 있고 조치완료되지 않은 경우 */
AND (IFNULL(act_cnt.ACT_ALL_CNT, 0) != 0 AND IFNULL(act_cnt.ACT_ALL_CNT, 0) != IFNULL(act_cnt.ACT_COMPLT_CNT, 0))
group by iti.SGG_CD, iti.IMPLT_INFO_ID, iti.IMPLT_TRPR_FLNM, iti.IMPLT_TRPR_ADDR, iti.IMPLT_TRPR_DADDR, iti.IMPLT_TRPR_ZIP, iti.IMPLT_TRPR_SE_CD
ORDER BY iti.IMPLT_TRPR_SE_CD, iti.IMPLT_TRPR_FLNM
</select>

@ -193,24 +193,12 @@
INNER JOIN TB_IMPLT_INFO ii ON iti.IMPLT_INFO_ID = ii.IMPLT_INFO_ID AND ii.DEL_YN = 'N'
INNER JOIN tb_crdn c ON ii.CRDN_YR = c.CRDN_YR AND ii.CRDN_NO = c.CRDN_NO AND c.DEL_YN = 'N'
INNER JOIN tb_pstn_info p ON p.CRDN_YR = c.CRDN_YR AND p.CRDN_NO = c.CRDN_NO AND p.DEL_YN = 'N'
/* 중요로직: 조치처리상태 확인을 위한 행위정보 조인 - 미조치 건만 조회 */
INNER JOIN (
SELECT
CRDN_YR,
CRDN_NO,
COUNT(1) as ACT_ALL_CNT,
SUM(CASE WHEN ACTN_PRCS_STTS_CD = '3' THEN 1 ELSE 0 END) as ACT_COMPLT_CNT
FROM tb_act_info
WHERE DEL_YN = 'N'
GROUP BY CRDN_YR, CRDN_NO
) act_cnt ON act_cnt.CRDN_YR = c.CRDN_YR AND act_cnt.CRDN_NO = c.CRDN_NO
INNER JOIN tb_act_info act ON act.CRDN_YR = c.CRDN_YR AND act.CRDN_NO = c.CRDN_NO AND act.DEL_YN = 'N' AND act.ACTN_PRCS_STTS_CD != '3'
-- 코드성 데이터 조인
LEFT JOIN tb_cd_detail impltTrprSe ON impltTrprSe.CD_GROUP_ID = 'IMPLT_TRPR_SE_CD' AND impltTrprSe.CD_ID = iti.IMPLT_TRPR_SE_CD
LEFT JOIN tb_cd_detail sggCd ON sggCd.CD_GROUP_ID = 'SGG_CD' AND sggCd.CD_ID = iti.SGG_CD
WHERE iti.IMPLT_INFO_ID = #{schImpltInfoId}
AND iti.DEL_YN = 'N'
/* 중요로직: 조치처리상태가 미조치(1)인 건만 조회 - 행위정보가 있고 조치완료되지 않은 경우 */
AND (IFNULL(act_cnt.ACT_ALL_CNT, 0) != 0 AND IFNULL(act_cnt.ACT_ALL_CNT, 0) != IFNULL(act_cnt.ACT_COMPLT_CNT, 0))
group by iti.SGG_CD, iti.IMPLT_INFO_ID, iti.IMPLT_TRPR_FLNM, iti.IMPLT_TRPR_ADDR, iti.IMPLT_TRPR_DADDR, iti.IMPLT_TRPR_ZIP, iti.IMPLT_TRPR_SE_CD
ORDER BY iti.IMPLT_TRPR_SE_CD, iti.IMPLT_TRPR_FLNM
</select>

Loading…
Cancel
Save