【发布时间】:2011-07-22 12:44:20
【问题描述】:
我在连接方面的经验有限,这个谜题让我很困惑。
以下是我的 mysql 数据库中的相关表:
- 学生桌
- 描述给定课程部分的部分表
- 在部门和学生之间创建多对多关系的映射表
- 描述考试的考试表
- 考试和部分之间的多对多映射表
- exam_schedules 表,描述了可以参加考试的日期。 Exams 和exam_schedules 之间存在一对多的关系。
我的目标:检索在给定日期安排考试的部分中注册的所有学生。还可以获取学生在给定日期必须参加的每项考试的考试安排信息。最好在每个学生exam_schedule 对的结果集中都有一行。
我有一个查询完成了我目标的前半部分(它有很多子查询):
SELECT * FROM `students` WHERE `id` IN
(SELECT `student_id` FROM `sections_students` WHERE `section_id` IN
(SELECT `section_id` FROM `sections_exams` WHERE `exam_id` IN
(SELECT `exam_id` FROM `exam_schedules` WHERE `date` = DATE('$date') AND `exam_id` IN
(SELECT `id` FROM `exams` WHERE `isAutoSignup` = 1))))
我想不通的是如何将连接合并到其中以实现我的目标的后半部分。我的每一次尝试都产生了语法错误。拜托,谁能指出我正确的方向?提前致谢!
【问题讨论】: