조인쿼리에대해 질문드립니다. 채택완료
A table (qu)
code문제 코드 |
step (문제번호) |
qanswer(정답1)
|
a.qanswerTwo(정답2)
|
code 001 |
1 |
1 |
1 |
code 001 |
2 |
2 |
3 |
code002 |
1 |
2 |
0 |
code002 | 2 | 3 | 0 |
code003 | 1 | 1 | 0 |
code003 | 2 | 4 | 0 |
b table (an)
code(문제 코드) | user (사용자) | step(문제번호) | b.answer(답풀이) |
code 001 | aaa | 1 | 1 |
code 001 | aaa | 2 | 3 |
code002 | aaa | 1 | 1 |
code002 | aaa | 2 | 3 |
code003 | aaa | 1 | 1 |
code003 | aaa | 2 | 4 |
code002 | bbb | 1 | 2 |
code002 | bbb | 2 | 3 |
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
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인