我的数据库结构如下所示:
https://docs.google.com/open?id=0B9ExyO6ktYcOenZ1WlBwdlY2R3c
一些表的解释:
answer_chk_results
- 检查答案表。因此,如果此表上不存在某些答案,则表示未选中lesson_questions
- 课程 <-> 问题关联(按 id)表
当我这样查询数据库时:
SELECT
q.id,
q.content,
q.type
FROM
`questions_and_exercises` q,
`lesson_questions` lq
WHERE
q.id = lq.qid
AND lq.lid = 1
我得到了所有的问题清单。但我想要的是每个问题的答案计数和检查答案。当我使用这个查询时:
SELECT
q.id,
q.content,
q.type,
COUNT(DISTINCT a.ID) answer_count,
COUNT(DISTINCT acr.id) checked_count
FROM
`questions_and_exercises` q,
`lesson_questions` lq
LEFT JOIN answers a ON a.qid = lq.qid,
LEFT JOIN `answer_chk_results` acr ON acr.aid = a.id
WHERE
q.id = lq.qid
AND lq.lid = 1
结果只有 1 个问题,答案计数错误。(我的数据库中有大约 9-10 个问题)我错过了什么?