現在、私はコースと試験モジュールを含むeラーニングプラットフォームの種類に取り組んでいます。アイデアは、コースの後に試験が続くということです。ユーザーは試験を数回解決することができます(試験表の設定に応じて)。私は、ユーザーが試験ページまたは統計ページにリダイレクトする必要があるかどうかを判断するためのモジュールを用意しています。ユーザーがすべての試行を使用していない場合は、試験にリダイレクトするか、そうでない場合は統計にリダイレクトする必要があります。ネストされたサブクエリのMySQL変数
ここでは、どこに行くべきかを決定する必要があるので、私のクエリ(ここではすべての条件と外部クエリのジョインはここでは関係ありません)があります。
SELECT
@course_id := courses.id as id,
IF(
(SELECT X.attempts_count FROM
(SELECT
COUNT(exams_attempts.id) as attempts_count,
@max_attempts := exams.max_attempts
FROM exams
LEFT JOIN exams_attempts ON exams.id = exams_attempts.quiz_id
JOIN users ON exams_attempts.user_id = users.id
WHERE exams_attempts.user_id = 12
AND exams_attempts.course_id = @course_id
HAVING attempts_count >= @max_attempts) as X
),
'stats',
'exam'
) as redirect
FROM courses
WHERE courses.id = 1
私は静的な値に限定されたコースですが、実際の使用では、それを調べるのに大量のコースです。
最後に、私は同じMySqlバージョンにもかかわらず、ローカルホストでは動作しますが、サーバでは動作しないことを発見しました。私は、クエリが正しく実行されないような設定があるかどうかを知りたいと思います。また、私はあなたの提案が何であるかを知りたいと思っています。私の考えは良くなく、そのクエリを再構築できますか?
この記事は実際に変数を理解して問題を解決するのに役立ちました。もう少し高度なSQLを扱う皆さんにお勧めします。 – Rocket