쿼리문 조언부탁드립니다. 0 5 908

by 호야별리 [SQL Query] [2017.10.25 09:18:48]


안녕하세요. 고수님들께 조언좀 구하고자 질문좀 드립니다.

아래와 같은 쿼리문을 만들어놨는데요. 제가 봐도 좀 잘못된 부분인것 같은데 어느부분이 잘못되었는지 도통 감이 안잡혀 문의좀 드립니다.

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 (회원발송 메일리스트)

로 구성되어 조인을 시도하려했습니다.

회원테이블 한명에 대한 메일리스트내용은 여러개 있습니다.

그중 메일리스트내용의 마지막 발송된 리스트내용을 어떻게 출력할수있는지...조언좀 부탁드립니다.

 

감사합니다.

by jkson [2017.10.25 09:47:28]

쿼리만 보면 각 컬럼이 어떤 컬럼인지 유추할 수밖에 없는데..

컬럼 설명을 좀 해주셔야할 것 같네요..


by 호야별리 [2017.10.25 09:56:44]

아..그런가요?^^ 


by 엠컨 [2017.10.25 10:06:28]
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

 

의도 하신게 이게 맞나 모르겠네요


by 호야별리 [2017.10.25 10:13:13]

^^ 엠컨님 감사합니다. 처리되었습니다.


by 우리집아찌 [2017.10.25 10:55:45]
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

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입