2011-10-19 4 views
1

질문을 이해할 수 있도록이 항목을주의 깊게 읽으십시오. 이 질문은 대학에서의 과제입니다.MYSQL PHP 테이블이 작동하지 않습니다.

하나는 응답 테이블이고 다른 하나는 StudentAnswer 테이블입니다. 관심 분야가 6 개 있는데, 응답 테이블에 4 개, StudentAnswer 테이블에 2 개 있습니다. 아래 표와 해당 필드 및 데이터가 있습니다.

+0

예제 데이터가 약간 혼란스럽게 보입니다. 당신이 보여주는'Answer' 테이블에서 질문 1에 대한 답들이 모두 있어야합니까? 'StudentAnswer'는 아마도 질문 1에 대한 답을 가지고있을 것입니다. 아마 다른 학생들로부터 왔을 것입니다. – Simon

+0

행 1은 u0867587 학생이 질문 1에 대한 답을 위해 무엇을 넣었는지를 보여줍니다. 정답은 leeds이며 그는 답안에 대해 답합니다. 2 행은 학생 u1231231이 똑같은 질문에 답했다는 것을 보여줍니다. 물론 정답은 여전히 ​​리듬이지만 버밍엄을 선택했습니다. – BruceyBandit

답변

0

당신은 내가 모든주의 말을,

SELECT * FROM Question q 
    INNER JOIN (SELECT sa.QuestionId, sa.StudentAnswer, at.AnswerContent FROM StudentAnswer sa LEFT JOIN Answer at ON (sa.StudentAnswer = at.AnswerId AND sa.QuestionId = at.QuestionId) sq ON q.QuestionId = sq.QuestionId 
    JOIN Answer a ON sq.QuestionId = a.QuestionId 
WHERE 
    (CorrectAnswer = '1') 
ORDER BY $orderfield ASC 

그러나

전체 스키마없이 정말 도울 수 없어요 ... 당신의 궁극적 인 대답은 아마 다음과 같이 somethink 모양 MySQL은 서브 쿼리 볼 필요가 유니 (허 더스 필드)의 나의 교사들은 과제물 발췌 문장에서 이와 같은 장소를 검색하는 것으로 유명 했으므로 문제가 발생하지 않고 도움이 되었기를 바랍니다.

+0

허 더스 필드 대학에서. 하지만 나는 지금 석사 학위를 연구하고 있습니다. 제 감독자 조안 루는 당신이 그녀를 안다면 모릅니다. 내 두 번째 감독은 Paul Judge입니다. 뭐하고 있니? – BruceyBandit

+0

왜 나는 StudentAnswer와 Answer 사이에 LEFT JOIN으로 갔는지 궁금합니다. 학생이 옵션 중 하나가 아닌 무언가로 대답했을 가능성이 있습니까? 아마도 외부 조인은 학생이 질문에 답하지 않은 경우에 'Question'과 'StudentAnswer'사이에 있어야합니다. – Simon

+0

학생은 질문 번호와 일치하는 답 중에서 만 선택할 수 없습니다. questionid 1에 4 개의 답이있는 경우 학생은 4 개의 답을 선택할 수 있습니다. – BruceyBandit

0

나는 당신이 찾고있는 것이 무엇인지 믿습니다.

SELECT * FROM `StudentAnswer` as sa 
    LEFT JOIN (SELECT * FROM `Question` WHERE correct = 1) as q 
    ON `sa`.Questionid = q.id 
0

당신은 당신이 그것을 다른 별명을주고 있는지 확인 쿼리에 두 번 이상 Answer 이상으로 가입 할 수 있습니다. WHERE 절과 JOIN 조건을 조합하면 질문에 대한 정답을 얻을 수 있습니다. StudentAnswerAnswer을 어떻게 연관시킬 수 있는지 생각해보십시오.

+0

문제가 쿼리가 아니므로 쿼리가 올바르게 작동합니다. 문제는 StudentAnswer의 ID 번호가 아닌 AnswerContent 필드를 사용하여 단어 대답으로 출력하는 방법입니다. 각 StudentAnswer ID를 응답 내용과 동일하게 만들고 $ row [ '...']를 표시하려면 – BruceyBandit

+0

쿼리가 실행되지만 필요한 데이터가 제공되지 않습니다. 'AnswerContent'에 대한 두 개의 값을 한 행에 얻으려면'Answer'에 두 번 이상 참여해야합니다. – Simon

관련 문제