안녕하세요. 고수님들께 조언좀 구하고자 질문좀 드립니다.
아래와 같은 쿼리문을 만들어놨는데요. 제가 봐도 좀 잘못된 부분인것 같은데 어느부분이 잘못되었는지 도통 감이 안잡혀 문의좀 드립니다.
SELECT a.mms_unique_num // 회원고유번호 , a.mms_progress // 회원상태 , b.unique_num // 메일리스트의 회원고유번호 , b.send_name // 발송자이름 , b.send_email // 발송자 이메일 , b.rece_email // 수신자이메일 , b.mailsubject // 메일제목 , b.mailcontent // 컨텐츠 , b.send_date // 발송시간 FROM mms_new_default_info a INNER JOIN mms_mail_send_history b ON a.mms_unique_num = b.unique_num WHERE (a.mms_progress <> '99' AND a.mms_progress <> '98') GROUP BY b.unique_num ORDER BY a.mms_unique_num DESC
내용은
mms_new_default_info (회원테이블)
mms_mail_send_history (회원발송 메일리스트)
로 구성되어 조인을 시도하려했습니다.
회원테이블 한명에 대한 메일리스트내용은 여러개 있습니다.
그중 메일리스트내용의 마지막 발송된 리스트내용을 어떻게 출력할수있는지...조언좀 부탁드립니다.
감사합니다.
SELECT a.mms_unique_num // 회원고유번호 , a.mms_progress // 회원상태 , b.unique_num // 메일리스트의 회원고유번호 , b.send_name // 발송자이름 , b.send_email // 발송자 이메일 , b.rece_email // 수신자이메일 , b.mailsubject // 메일제목 , b.mailcontent // 컨텐츠 , b.send_date // 발송시간 FROM mms_new_default_info a INNER JOIN mms_mail_send_history b ON a.mms_unique_num = b.unique_num WHERE (a.mms_progress <> '99' AND a.mms_progress <> '98') AND b.send_date = (SELECT MAX(c.send_date) FROM mms_mail_send_history c where a.mms_unique_num = c.unique_num) GROUP BY b.unique_num ORDER BY a.mms_unique_num DESC
의도 하신게 이게 맞나 모르겠네요
SELECT a.mms_unique_num // 회원고유번호 , a.mms_progress // 회원상태 , b.unique_num // 메일리스트의 회원고유번호 , b.send_name // 발송자이름 , b.send_email // 발송자 이메일 , b.rece_email // 수신자이메일 , b.mailsubject // 메일제목 , b.mailcontent // 컨텐츠 , b.send_date // 발송시간 FROM mms_new_default_info a ,( SELECT T.* , ROW_NUMBER() OVER(PARTITION BY unique_num ORDER BY send_date DESC ) RN FROM mms_mail_send_history T ) b WHERE a.mms_unique_num = b.unique_num AND a.mms_progress NOT IN ( '99' , '98' ) AND b.rn = 1 ORDER BY a.mms_unique_num DESC