댓글이 없을 때는 조회가 안 되기 때문!
그리고 LEFT 꼭 써주기! 안 쓰면 누락된 키워드 에러 뜬다.
테이블 쪼갰더니 쿼리 엄청 길다.
<select id="getList" resultType="hashmap" parameterType="hashmap">
SELECT M.MEM_NAME, R.RECIPE_TITLE,
TO_CHAR(R.REG_DATE, 'YYYY-MM-DD HH24:MI:SS')AS "REG_DATE",
RC.CNT AS "CMT", RF.CNT AS "FAV", RL.CNT AS "LIKE",
RI.IMG
FROM RECIPE R INNER JOIN MEMBER M
ON M.MEM_NO = R.MEM_NO
INNER JOIN RECIPE_IMG RI
ON R.RECIPE_NO = RI.RECIPE_NO
LEFT OUTER JOIN (SELECT COUNT(*) AS CNT, RECIPE_NO, DEL
FROM RECIPE_LIKE
WHERE DEL = 1
GROUP BY RECIPE_NO, DEL)RL
ON R.RECIPE_NO = RL.RECIPE_NO
LEFT OUTER JOIN (SELECT COUNT(*) AS CNT, RECIPE_NO, DEL
FROM RECIPE_CMT
WHERE DEL = 1
GROUP BY RECIPE_NO, DEL)RC
ON R.RECIPE_NO = RC.RECIPE_NO
LEFT OUTER JOIN (SELECT COUNT(*) AS CNT, RECIPE_NO, DEL
FROM RECIPE_FAV
WHERE DEL = 1
GROUP BY RECIPE_NO, DEL)RF
ON R.RECIPE_NO = RF.RECIPE_NO
WHERE R.DEL = 1
AND RI.IMG_TYPE = 0
<if test="searchText != null and searchText != ''">
<choose>
<when test="searchGbn eq 0">
AND M.MEM_NAME LIKE '%' || #{searchText} || '%'
</when>
<when test="searchGbn eq 1">
AND R.RECIPE_TITLE LIKE '%' || #{searchText} || '%'
</when>
</choose>
</if>
</select>
+ 표시할 때는 댓글 없는 건(null) 0으로 표시해야 하므로 NVL 사용하기!
<select id="getList" resultType="hashmap" parameterType="hashmap">
SELECT M.MEM_NAME, R.RECIPE_TITLE,
TO_CHAR(R.REG_DATE, 'YYYY-MM-DD HH24:MI:SS')AS "REG_DATE",
NVL(RC.CNT, 0) AS "CMT", NVL(RF.CNT, 0) AS "FAV",
NVL(RL.CNT, 0) AS "LIKE", RI.IMG
FROM RECIPE R INNER JOIN MEMBER M
ON M.MEM_NO = R.MEM_NO
INNER JOIN RECIPE_IMG RI
ON R.RECIPE_NO = RI.RECIPE_NO
LEFT OUTER JOIN (SELECT COUNT(*) AS CNT, RECIPE_NO, DEL
FROM RECIPE_LIKE
WHERE DEL = 1
GROUP BY RECIPE_NO, DEL)RL
ON R.RECIPE_NO = RL.RECIPE_NO
LEFT OUTER JOIN (SELECT COUNT(*) AS CNT, RECIPE_NO, DEL
FROM RECIPE_CMT
WHERE DEL = 1
GROUP BY RECIPE_NO, DEL)RC
ON R.RECIPE_NO = RC.RECIPE_NO
LEFT OUTER JOIN (SELECT COUNT(*) AS CNT, RECIPE_NO, DEL
FROM RECIPE_FAV
WHERE DEL = 1
GROUP BY RECIPE_NO, DEL)RF
ON R.RECIPE_NO = RF.RECIPE_NO
WHERE R.DEL = 1
AND RI.IMG_TYPE = 0
<if test="searchText != null and searchText != ''">
<choose>
<when test="searchGbn eq 0">
AND M.MEM_NAME LIKE '%' || #{searchText} || '%'
</when>
<when test="searchGbn eq 1">
AND R.RECIPE_TITLE LIKE '%' || #{searchText} || '%'
</when>
</choose>
</if>
</select>
'자율 학습 > 학습' 카테고리의 다른 글
[jQuery] 사진 첨부 - 다른 거 클릭 시키기, 사진 파일만 첨부할 수 있게 하기 (0) | 2022.09.15 |
---|---|
[jQuery] keypress() 메서드 (0) | 2022.09.15 |
[CSS] :root 가상 선택자 이용해서 색 지정하기 (0) | 2022.09.14 |
[ORACLE/SQL] INSERT ALL INTO - 여러 테이블에 동시에 데이터 넣기 (0) | 2022.09.14 |
[jQuery] 부모, 형제, 자식 찾기 (0) | 2022.09.13 |