오라클 쿼리 질문 0 3 851

by 수다링 [Oracle 기초] [2017.09.20 15:24:28]


처음으로 질문남겨봅니다 고수님들 부탁드려요 ㅠ

5개의 문제가 있고 사용자는 랜덤으로 그중 1개의 문제만 풀도록 프로그램 되어있습니다.
문제와 답은 디비에서 관리하지 않습니다.
(답은 O,X 선택하도록 되어있습니다.)

현재 테이블에는
이름  전화번호  날짜   푼문제코드  입력한답  

이렇게 들어가있습니다.

문제의 정답은 decode를 통해
select decode(문제코드,'1번문제코드','O','2번문제코드','X','3번문제코드','O','4번문제코드','O','5번문제코드','O'),
이렇게 볼수있습니다.

테이블에는 문제를 푼 모든사람들의 정보가 들어가게되어있기때문에 정답을 맞춘사람과 맞추지않은사람들의 정보가 다 들어가있습니다.

여기서 정답을 맞춘사람만 select 하고싶을때 어떻게 해야좋을까요 ㅠ

셀프조인 시도해봤는데 아직 미숙해서 그런지 실패했습니다.ㅠ 

고수님들 도움 부탁드려요 ㅠ

by 김용한 [2017.09.20 15:33:42]
with t as (
select '이름1' name, '010-1111-2222' tel, '20170901' dd, 'cd1' cd, 'O' ans from dual union all
select '이름2' name, '010-1111-2223' tel, '20170901' dd, 'cd2' cd, 'O' ans from dual union all
select '이름3' name, '010-1111-2224' tel, '20170901' dd, 'cd3' cd, 'O' ans from dual union all
select '이름4' name, '010-1111-2225' tel, '20170901' dd, 'cd4' cd, 'O' ans from dual union all
select '이름5' name, '010-1111-2226' tel, '20170901' dd, 'cd4' cd, 'O' ans from dual union all
select '이름6' name, '010-1111-2227' tel, '20170901' dd, 'cd5' cd, 'O' ans from dual
)
select a.*
  from t a
      ,(select 'cd1' cd, 'O' ans from dual union all
        select 'cd2' cd, 'X' ans from dual union all
        select 'cd3' cd, 'O' ans from dual union all
        select 'cd4' cd, 'O' ans from dual union all
        select 'cd5' cd, 'O' ans from dual
       ) b
 where a.cd = b.cd
   and a.ans = b.ans
;

 


by 마농 [2017.09.20 15:49:48]
SELECT *
  FROM t
 WHERE 입력한답 = DECODE(푼문제코드, '1번문제코드', 'O'
                                   , '2번문제코드', 'X'
                                   , '3번문제코드', 'O'
                                   , '4번문제코드', 'O'
                                   , '5번문제코드', 'O'
                                   )
;

 


by 수다링 [2017.09.20 16:23:46]

우와.. 두분다 정말 감사드립니다 ㅠ 디비 공부 열심히 할게요!

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