使用mysql JOIN的多个表

时间:2012-06-05 13:58:22

标签: mysql

因此,我希望获得用户花费在特定课程上进行测验的时间。

这是我目前的代码。

$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;

感觉就像一个可怕的查询来获得我需要的东西。有没有更好的方法来构建我的数据库,或运行这个不会如此史诗的查询?

谢谢!

2 个答案:

答案 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;