因此,我希望获得用户花费在特定课程上进行测验的时间。
这是我目前的代码。
$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;
感觉就像一个可怕的查询来获得我需要的东西。有没有更好的方法来构建我的数据库,或运行这个不会如此史诗的查询?
谢谢!
答案 0 :(得分:0)
在开头用“Explain”语句检查您的查询。如果设置了所有连接/关系且索引不是Null,则无需更改它。
答案 1 :(得分: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;