일부 조건에 따라 필드 수를 얻으려고합니다. 그러나 나는 아직 원하는 결과를 얻을 수 없다.MySQL에서 대소 문자를 사용하여 특정 필드 수를 얻는 방법
표 :: 퀴즈 질문 :
qq_id | qq_type | qq_title
----------------------------------------------------
1 | 1 | This is a multiple choice question
2 | 2 | This is a single choice question
3 | 4 | This is a descriptive type question
표 :: 퀴즈 질문 세부 사항 :
qqd_id | qqd_question_id | qqd_option_text | qqd_option_is_answer
-----------------------------------------------------------------
1 | 1 | Yes | 1
2 | 1 | No | 2
3 | 1 | May Be | 1
4 | 2 | Yes | 1
5 | 2 | No | 2
표 :: 퀴즈 참가자 답변 :
qa_id | qa_quiz_id| qa_participant_id | qa_question_id | qa_answer**
-------------------------------------------------------------------------------
1 | 1 | 3 | 1 | 1
2 | 1 | 3 | 1 | 3
3 | 1 | 3 | 2 | 4
4 | 1 | 3 | 3 | null
,
** 필드 qa_answer는 퀴즈 질문 세부 사항 표의 qqd_id입니다.
질문 (qq_id = 1)은 객관식 질문이므로 1 개 이상의 답이 나옵니다. 질문 (qq_id = 2)은 단 하나의 대답을 가지며 질문 (qq_id = 3)은 설명적인 질문입니다. 관리자에 의해 정의 된
답변이 질문의 세부 사항 테이블에 저장됩니다, 우리는 qqd_question_id = 1 중 2 (qqd_id 1 & 3)
정답 수와 합계를 계산 올바른지하는 3 개 답변을 가지고 볼 수 있습니다 (Qq_id = 1은 하나의 질문이지만 여러 개의 답을 가지고 있기 때문에) 총 정답은 3 (잘못된 것이며 예상은 2 임)이고 총 응답 수는 3입니다. 옳은).
저는 laravel 5.4 프레임 워크를 사용하고 있습니다. 다음 쿼리를 사용하여 쿼리를 테스트하고 있습니다.
참고 : 테스트 목적으로 테이블에 추가 필드 (qa_is_correct_answer)를 추가했습니다 (세부 정보 테이블과의 조인 없음). 무시하십시오.
DB::table('quiz_answers AS QA')
->select(DB::Raw('QA.*, SUM(QA.qa_is_correct_answer = 1) AS correct, COUNT(DISTINCT QA.qa_question_id) AS total_answered'))
->where('QA.qa_quiz_id',$quizID)
->where('QA.qa_participant_id',$participantID)
->groupBy('QA.qa_quiz_id')
->get();
SQL 바이올린 :http://sqlfiddle.com/#!9/ba1650/3
전적으로 귀하의 데이터를 따르지는 않지만 그룹을 수행하는 동안 '품질 보증. *'을 선택하면 유효하지 않다고 말합니다. –
원하는 결과를 볼 수 없습니다. https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query를 참조하십시오. – Strawberry
@Strawberry 나는 SQL 바이블에 대한 링크로 질문을 업데이트했다. – Shan