Ниже приведены мои данные и запрос,
academic year start date - 2018-01-01
academic year end date - 2018-06-30
Таблица условий
term_id parent_id start_date end_date
1 null 2018-01-01 2018-01-30
2 1 2018-01-01 2018-01-10
3 1 2018-01-11 2018-01-20
4 null 2018-02-01 2018-02-28
5 4 2018-02-01 2018-02-10
6 4 2018-02-11 2018-02-20
Я хочу добавить новый термин, который не должен быть в диапазоне дат term_id 1,2, а также в диапазоне дат начала и окончания учебного года. Но в моем запросе он не работает ниже, это мой запрос,
Я ввел, он не должен вводить снизу запрос
start_date - 2018-02-11
end_date - 2018-02-25
SELECT * from term
where parent_id=null
and start_date >= 2018-02-11
and end_date <= 2018-02-25
and start_date >= 2018-01-01(academic year start date)
and end_date <= 2018-06-30(academic year end date)
То же самое для ввода суб-термина должно быть в диапазоне родительских сроков и уникальным во всех подзаголовках одного и того же родительского термина. Я ввел, который не должен входить,
start_date - 2018-02-13
end_date -2018-02-18
Мой запрос ниже,
SELECT * from term
where parent_id=4
and start_date >= 2018-02-13
and end_date <= 2018-02-18
and start_date >= 2018-02-01(parent term start date)
and end_date <= 2018-02-28(parent term end_date)
and start_date >= 2018-01-01(academic year start date)
and end_date <= 2018-06-30(academic year end date)
Итак, я собираюсь спросить об этом: Имя столбца start_date или start_time?
УДАЛЕНИЕ НИЖЕ, ПОТОМУ ЧТО ВСЕ ЕЩЕ СООТВЕТСТВУЕТ
Даты используются в операторах SQL, таких как строки, поэтому их нужно обернуть в двойные кавычки "
. Таким образом, запрос должен быть примерно таким:
SELECT * from term
where parent_id=4
and start_date >= "2018-02-13"
and end_date <= "2018-02-18"
and start_date >= "2018-02-01"
and end_date <= "2018-02-28"
and start_date >= "2018-01-01"
and end_date <= "2018-06-30"
Однако ваш SQL-запрос очень запутан. Вы говорите, где start_date больше, чем 13 февраля, и это больше, чем 1 февраля, и это больше, чем 1 января, и то же самое для даты окончания.
Вы можете просто сказать:
SELECT * FROM term
WHERE parent_id = 4
AND start_date >= "2018-01-01"
AND end_date <= "2018-06-30"
Это выполнило бы все вышеупомянутые заявления "И".