Я пытаюсь получить некоторые данные.
Вот настройка:
У [школы] может быть несколько [семестров]. Только один [семестр] может быть активным на [школу].
Упрощенные поля для таблицы:
- [школа] имеет 'id', 'title'
- [school_semester] имеет 'id', 'school_id' (fk), 'semester_id' (fk), ' active ', 'start_date', 'end_date'
- [семестр] имеет 'id', 'title'
Таблица "school_semester" содержит информацию для конкретной школы / семестра. (StartDate, EndDate, и т.д.).
В любом случае, я просто пытаюсь подтянуть все школы, и в этом запросе я также хочу увидеть текущий активный семестр этой школы.
Вот мой запрос:
SELECT *, `school`.`name` as school_name
FROM (`school`)
LEFT JOIN `school_semester` ON `school`.`id` = `school_semester`.`school_id`
LEFT JOIN `semester` ON `semester`.`id` = `school_semester`.`semester_id`
ORDER BY `school_semester`.`active`
Проблема:
Это работает, если в школе есть активный семестр, но если нет, то в нем будет показан тот, который может быть помечен как неактивный. Если я добавлю утверждение ГДЕ school_semester
. active
= 1, оно исключает школы, у которых нет активного семестра.
Есть указатели?