1

そのため、特定のコースからユーザーがクイズに費やした時間を取得したいと思います。

これが私の現在のコードです。

$study_time = "SELECT SUM(time) as study_time FROM user_quizzes
                        JOIN course_topic_badges ON course_topic_badges.id = user_quizzes.badge_id
                        JOIN course_topics ON course_topic_badges.topic_id = course_topics.id
                        JOIN courses ON course_topics.course_id = courses.id
                        WHERE user_id = ".$user_id." AND courses.id = ".$subject;

必要なものを取得するための巨大なクエリのように感じます。データベースを構造化する、またはそれほど壮大ではないこのクエリを実行するためのより良い方法はありますか?

ありがとう!

4

2 に答える 2

0

最初に「Explain」ステートメントを使用してクエリを確認してください。すべての結合/関係が設定されていて、インデックスがNullでない場合は、変更する必要はありません。

于 2012-06-05T14:04:42.897 に答える
0

これは恐ろしいことではありませんが、エイリアスを追加することで少し圧縮できます。

$study_time = "SELECT SUM(time) as study_time FROM user_quizzes uq
    JOIN course_topic_badges ctb ON ctb.id = uq.badge_id
    JOIN course_topics ct ON ctb.topic_id = ct.id
    JOIN courses c ON ct.course_id = c.id
    WHERE user_id = ".$user_id." AND c.id = ".$subject;
于 2012-06-05T14:04:51.067 に答える