コースリストを生成してカウントする必要があります
- すべて
- 未回答
- 答えたがチェックされていない
質問。
私のデータベース構造はそのように見えます
https://docs.google.com/open?id=0B9ExyO6ktYcOenZ1WlBwdlY2R3c
一部のテーブルの説明:
answer_chk_results
-回答表を確認しました。したがって、このテーブルに回答が存在しない場合は、チェックされていないことを意味しますlesson_questions
-レッスン<->質問の関連付け(ID別)テーブルcourses-lessons
-コース<->レッスンの関連付け(ID別)テーブル
実行中
SELECT
c.ID,
c. NAME,
COUNT(lq.id) AS Questions,
COUNT(
CASE
WHEN a.id IS NULL THEN
lq.id
END
) AS UnAnswered,
COUNT(
CASE
WHEN cr.id IS NULL THEN
lq.id
END
) AS UnChecked
FROM
courses c
LEFT JOIN `courses-lessons` cl ON cl.cid = c.id
LEFT JOIN `lesson_questions` lq ON lq.lid = cl.lid
LEFT JOIN answers a ON a.qid = lq.qid
LEFT JOIN answer_chk_results cr ON cr.aid = a.id
GROUP BY
c.ID
最初にサンプルデータを使用してSQLフィドルでテストしました。(実際のデータは巨大なので、sqlfiddleに配置できません)いくつかの値を返しました。思考はうまくいきます。しかし、実際のデータでテストしている間、それが間違った値を返すことを確認してください。外国為替、私が手動で数えるとき、の結果はall questions count
25でなければなりません、しかしそれは27を返します。多分私は何か間違ったことをしています。
MySQLサーバーがローカルマシンで実行されていることに注意してください。デスクトップにリモートで接続して実際のデータでクエリをテストする場合は、teamviewerIDとパスワードを提供できます。