조인쿼리에대해 질문드립니다.

조인쿼리에대해 질문드립니다.

QA

조인쿼리에대해 질문드립니다.

본문

A table (qu)

 code문제 코드

step (문제번호)

qanswer(정답1)

 

 a.qanswerTwo​(정답2)

 

code 001

 1

 1

code 001

 2

 3

 code002

 0

 code002

230

 code003

110

 code003

240

 

b table (an)

 code(문제 코드)

user (사용자)

step(문제번호) 

b.answer​(답풀이)

code 001

aaa

 1

 1

code 001

aaa

 2

 3

 code002

aaa

1

 1

 code002

aaa23

 code003

aaa11

 code003

aaa24

 code002

bbb12

 code002

bbb23

 

 

 

 

setp 2문제가 다맞어야 정답처리

qanswer, a.qanswerTwo 둘중에 1개 맞아도 정답

나와야될 결과

 user

cnt 

 aaa

 2

 bbb

 1

 

 

 

실제 작업한 쿼리

 

SELECT b.user,count(*) as cnt from qu a

LEFT JOIN an b

ON a.step=b.step and a.code = b.code 

where  a.qanswer=b.answer or a.qanswerTwo=b.answer

group by a.user

 

결과 

 user

cnt 

 aaa

 5

 bbb

 3

 

위에 나와야 될 결과 나오게 할려면 

쿼리를 어떻에 처리 해야 되나요?

 

조언 부탁합니다.

 

 

 

이 질문에 댓글 쓰기 :

답변 1

답을 구해보기는 했는데

이 부분은  쿼리문으로만 처리 하는거 보다는

php 파일에서 처리 하는 편이 좋을 것 같네요..

쿼리가 더럽습니다...ㅠㅠ

 

SELECT
 c.user, count(*) as cnt
FROM
 an as c
JOIN
 (
  select
   a.code,a.user
  from
   an as a
  left join
   qu as b
  ON
   a.code = b.code
  AND
   a.step = b.step
  WHERE
   a.step = 1
  AND
   (a.answer = b.qanswer or a.answer = b.qanswerTwo)
 )

 as d

ON
 d.code = c.code
AND
 c.user = d.user

WHERE
 c.step = 2
 AND
 (
  c.answer = (select qanswer from qu where code = d.code and step = 2)
  OR
  c.answer = (select qanswerTwo from qu where code = d.code and step = 2)
 )
GROUP BY
 c.user​

답변을 작성하시기 전에 로그인 해주세요.
전체 2

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT