SELECT A.MEMBER_NAME, B.REVIEW_TEXT, DATE_FORMAT(B.REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATE FROM MEMBER_PROFILE A
JOIN REST_REVIEW B ON A.MEMBER_ID = B.MEMBER_ID
WHERE A.MEMBER_NAME IN (
SELECT MEMBER_NAME FROM (
SELECT C.MEMBER_NAME, COUNT(REVIEW_ID) FROM MEMBER_PROFILE C
JOIN REST_REVIEW D ON C.MEMBER_ID = D.MEMBER_ID
GROUP BY MEMBER_NAME
ORDER BY COUNT(REVIEW_ID) DESC LIMIT 1) E
)
ORDER BY REVIEW_DATE, REVIEW_TEXT
JOIN을 통해 합치고 리뷰를 가장 많이 작성한 회원을 서브 쿼리문으로 빼서 작성하면 되겠다라는 접근해서 문제를 풀었지만, 잘 안풀리고 오류가 나서 결국 다른 사람의 코드를 참고하여 원래 내가 작성하는 방식으로 바꿔 문제를 풀었다.
SELECT C.MEMBER_NAME, COUNT(REVIEW_ID) FROM MEMBER_PROFILE C
JOIN REST_REVIEW D ON C.MEMBER_ID = D.MEMBER_ID
GROUP BY MEMBER_NAME
SELECT C.MEMBER_NAME, COUNT(REVIEW_ID) FROM MEMBER_PROFILE C
JOIN REST_REVIEW D ON C.MEMBER_ID = D.MEMBER_ID
GROUP BY MEMBER_NAME
ORDER BY COUNT(REVIEW_ID) DESC
SELECT C.MEMBER_NAME, COUNT(REVIEW_ID) FROM MEMBER_PROFILE C
JOIN REST_REVIEW D ON C.MEMBER_ID = D.MEMBER_ID
GROUP BY MEMBER_NAME
ORDER BY COUNT(REVIEW_ID) DESC LIMIT 1
LEFT JOIN을 하면 '김서준'이 나오고
(INNER) JOIN을 하면 '김민재'가 나온다.
모두 정답에 해당되니 문제는 없다.
SELECT MEMBER_NAME FROM (
SELECT C.MEMBER_NAME, COUNT(REVIEW_ID) FROM MEMBER_PROFILE C
JOIN REST_REVIEW D ON C.MEMBER_ID = D.MEMBER_ID
GROUP BY MEMBER_NAME
ORDER BY COUNT(REVIEW_ID) DESC LIMIT 1) E
해당 테이블마다 별칭을 설정해주면 WHERE 조건문을 작성할 때도 그에 맞는 별칭을 사용해줘야 하며, JOIN한 뒤 ON(JOIN을 하게 만들 조건)을 설정하는 경우 편하게 작성할 수 있다.
앞서 언급한 것과 같이 서브쿼리문 뒤에도 별칭을 작성해줘야 한다!