쿼리 질문 드립니다. 0 3 1,500

by 성이 [SQL Query] [2015.03.18 16:04:01]


요청사항이 한강의에 15차시까지 다 보고 16차시의 강의 시작시간은 있는데 종료시간이 없는 회원을 골라달라고 해서

SELECT  USER_ID  FROM USERSCOINFO
WHERE IDENTIFIER = 'CRS20150120103556300' AND START_DT IS NOT NULL AND END_DT IS NULL
GROUP BY  USER_ID
HAVING COUNT(IDENTIFIER) = 16

이렇게 해서 잘 뽑았습니다.

그런데 해당 아이디로  LECTURE_STUDENT 테이블에 PASS_YN = 'N' 일때만 나오게 해달라고 하더군요. 그래서

SELECT  a.USER_ID  FROM USERSCOINFO a, LECTURE_STUDENT b 
WHERE IDENTIFIER = 'CRS20150120103556300'  AND a.START_DT IS NOT NULL AND a.END_DT IS NULL AND a.USER_ID = b.USER_ID AND b.PASS_YN = 'N'
GROUP BY  a.USER_ID
HAVING COUNT(a.IDENTIFIER) = 16
이렇게 하니 필터링이 이상하게 되네요;; having절이 잘 안되는거 같기도 하고..

방법이 뭐있을까요? ㅠㅠ

 

by 창조의날개 [2015.03.18 16:35:10]
SELECT AA.USER_ID
FROM (
      SELECT  USER_ID  FROM USERSCOINFO
      WHERE IDENTIFIER = 'CRS20150120103556300' AND START_DT IS NOT NULL AND END_DT IS NULL
      GROUP BY  USER_ID
      HAVING COUNT(IDENTIFIER) = 16
      ) AA
      , LECTURE_STUDENT BB
WHERE AA.USER_ID = BB.USER_ID
  AND BB. PASS_YN = 'N'
;

16차시라는 기준을 COUNT로 하면 강의 시작시간은 있는데 종료시간이 없는 개수가

16개 인것 기준으로 가져 올텐데??

좀 이상한거 같지만 원하는 데이터가 잘 나온다고 하시니....

 

 


by 성이 [2015.03.18 17:26:43]

음~ 설명 들어보니 갯수체크에 문제가 있을꺼 같네요..

조언 감사드립니다~ 다시 좀 봐야겠네요

쿼리도 참고 잘 하겠습니다 ^^


by 개발뉴비 [2015.03.18 17:42:58]
-- 15차까지 수업을 받은 사람들 중 16차의 시작시간은 있지만 종료시간이 없는사람
-- LECTURE_STUDENT 테이블의 PASS_YN이 N인 사람
-- IDENTIFIER가 차수의 고유코드일 것 같아서 해당 건으로 짜봤어요

SELECT  A.USER_ID  
FROM USERSCOINFO A, LECTURE_STUDENT B
WHERE A.USER_ID = B.USER_ID 
  AND IDENTIFIER = '16차코드'
  AND A.START_DT IS NOT NULL
  AND A.END_DT IS NULL 
  AND B.PASS_YN = 'N'
  AND EXISTS (SELECT USER_ID FROM USERSCOINFO AA, LECTURE_STUDENT BB 
               WHERE AA.USER_ID = BB.USER_ID
                 AND IDENTIFIER = '15차코드'
                 AND BB.PASS_YN = 'Y'
                 AND USER_ID=A.USER_ID);

-- 그런데 짜고나니 좀 이상하네요...
-- USERSCOINFO과 LECTURE_STUDENT 테이블을 JOIN 할 때 차수도 같이 조인해야 할 것 같은데...
-- 그냥 USER_ID만 가지고 조인하는게 괜찮은지 모르겠네요....

 

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