쿼리 질문드립니다. 0 5 1,721

by 성이 [SQL Query] [2015.01.27 16:19:17]


목록 뿌려주는 쿼리 질문드려요
이러닝사이트에서 사용자가 해당 과정 신청하고 각 차시별 강의 시작한시간 끝나는 시간 뽑아오는건데요
정확히는 아니지만 대략적으로 3개의 테이블로 이루어진거 같습니다.

COURSE_MANAGE -> 여러 과정들의 코드값 및 한글 이름이 들어있는 테이블
USERSCOINFO   -> 사용자가 과목을 선택하고 들으면 해당 과목의 코드 및 시작, 종료 시간이 들어가는 테이블
LECTURE_STUDENT -> 사용자가 신청한 과목코드가 저장됨

대충 이렇게 파악이 되고 있습니다.

각 과목의 시작과 끝을 뽑아오는거 USERSCOINFO  이 테이블에 정보 있으니 뽑아오면 되겠다 싶어습니다
일단 리스트에는 한글로 뿌려져야 하니 COURSE_MANAGE 테이블이랑 매칭시켜서 하면 되겠다 했죠

그런데 이렇게 저렇게 해서 

SELECT NAME, START_DT, END_DT from(
  SELECT a.IDENTIFIER_SORT, A.NAME, b.APPLY_KEY, b.START_DT, b.END_DT FROM COURSE_MANAGE a, USERSCOINFO b, LECTURE_STUDENT c
  WHERE a.IDENTIFIER = b.SCO_ID AND  b.APPLY_KEY = c.APPLY_KEY AND b.USER_ID = c.USER_ID
)
WHERE APPLY_KEY = 460069 

이런식으로 코딩하니

이렇게 나옵니다... 뭐 나오긴 나오는데... 제가 원하는건
NAME 부분에 제목은 처음 부터 끝까지 다 나오고 옆에 시작 끝시간이 나오는거죠
즉~ 이름옆에 과목을 아직 수강을 안했으면 그냥 null로 있게...
이게 될듯 될듯하는데 안되네요;; 참 쿼리가 어렵습니다 ㅠㅠ

by lovekod2hj [2015.01.27 16:39:36]

USERSCOINFO에 데이터가 수강을 들으면 입력되는 형식이라면

LECTURE_STUDENT 테이블을 기준으로 USERSCOINFO와 조인할 때 OUTER JOIN을 사용하시면 됩니다.

지금은 모두 INNER JOIN을 사용했는데 이경우 수강신청은 했지만 수강이 되지 않아서

데이터가 들어가 있지 않을 경우 나오지 않습니다.

하지만 이경우는 LECTURE_STUDENT과 COURSE_MANAGE와의 관계가 있어야 하는데 캡쳐한 화면 기준으로는 없네요?


by lovekod2hj [2015.01.27 16:59:26]

현재 테이블 기준으로 보면 A, B는 IDENTIFIER로 연결되어야 할거 같습니다.

SELECT A.NAME,
  b.START_DT,
  b.END_DT
FROM COURSE_MANAGE a,
  USERSCOINFO b,
  LECTURE_STUDENT c
WHERE a.IDENTIFIER = b.IDENTIFIER
  AND b.APPLY_KEY = c.APPLY_KEY
  AND b.USER_ID = c.USER_ID
  AND C.APPLY_KEY = 460069 

 


by 성이 [2015.01.27 17:10:11]

답변 감사드립니다.

위에 쿼리로 해도.. 똑같은 결과네용;;

COURSE_MANAGE 랑 LECTURE_STUDENT 연결할 만한 뭐가 있나 보니 없더라구요;;

뭔가 참조할 테이블이 있는데 제가 못찾는건지;;;

 


by lovekod2hj [2015.01.27 17:58:49]

캡쳐해서 올리주신 USERSCOINFO 테이블에 데이터를 보면 신청 과목의 차수 수강데이터 같습니다.

추가로 해당 과목에 대한 차수정보를 가진 테이블이 있을 거 같네요.

그 테이블을 찾아보세요.


by 성이 [2015.01.27 18:37:41]

더 찾아봐야 겠네요~ 답변 감사합니다 ^^

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