У меня ограниченный опыт работы с объединениями, и эта головоломка поставила меня в тупик.
Вот соответствующие таблицы из моей базы данных mysql:
- Таблица студентов
- Таблица разделов, описывающая разделы данного курса
- Таблица карт, которая создает отношение «многие ко многим» между разделами и студентами
- Таблица экзаменов, описывающая экзамены
- Aтаблица сопоставлений «многие ко многим» между экзаменами и разделами
- Таблица экзаменов_скриптов, в которой описываются дни, в которые можно сдавать экзамены.Между экзаменами и графиком экзаменов существует отношение один ко многим.
Моя цель: получить всех студентов, которые зачислены в разделы, в которых запланированы экзамены на определенную дату.Также получите информацию о расписании экзаменов для каждого теста, который студент должен сдать в указанный день.Желательно иметь строку в наборе результатов для каждой пары студентов <-> 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))))
Чего я не могу понять, так это как включить соединение в него для достижения второй половины моей цели.Каждая моя попытка вызвала синтаксическую ошибку.Пожалуйста, кто-нибудь может указать мне правильное направление?Заранее спасибо!