У меня есть таблицы и данные, подобные этому:
venues table contains : id
+----+---------+ | id | name | +----+---------+ | 1 | venue 1 | | 2 | venue 2 | --------------- event_dates : id, event_id, event_from_datetime, event_to_datetime, venue_id +----+----------+---------------------+---------------------+----------+ | id | event_id | event_from_datetime | event_to_datetime | venue_id | +----+----------+---------------------+---------------------+----------+ | 1 | 1 | 2009-12-05 00:00:00 | 2009-12-07 00:00:00 | 1 | | 2 | 1 | 2009-12-09 00:00:00 | 2009-12-12 00:00:00 | 1 | | 3 | 1 | 2009-12-15 00:00:00 | 2009-12-20 00:00:00 | 2 | +----+----------+---------------------+---------------------+----------+
Это мое требование: мне нужны площадки, которые будут свободны 06.12.2009, 00:00:00, т.е.
я должен получить
|место_id|
|2 |
В настоящее время у меня есть следующий запрос,
select ven.id , evtdt.event_from_datetime, evtdt.event_to_datetime from venues ven left join event_dates evtdt on (ven.id=evtdt.venue_id) where evtdt.venue_id is null or not ('2009-12-06 00:00:00' between evtdt.event_from_datetime and evtdt.event_to_datetime); +----+---------------------+---------------------+ | id | event_from_datetime | event_to_datetime | +----+---------------------+---------------------+ | 1 | 2009-12-09 00:00:00 | 2009-12-12 00:00:00 | | 2 | 2009-12-15 00:00:00 | 2009-12-20 00:00:00 | | 3 | NULL | NULL | | 5 | NULL | NULL | +----+---------------------+---------------------+
Если вы обратите внимание на результаты, они не включают идентификатор места проведения 1, где дата находится между 2009-12-06 00:00:00, но показывает другие бронирования. Пожалуйста, помогите мне исправить этот запрос.
Заранее спасибо.