Помогите создать запрос без использования массива

__Serghei__

Новичок
Есть база номеров с указанными занятых периодов с [startData] - по [endData]

------------------------------------------
| number | startData | endData |
------------------------------------------
| 1 | 14-08-2013 | 17-08-2013 |
| 1 | 21-09-2013 | 27-09-2013 |
| 2 | 18-08-2013 | 23-08-2013 |
------------------------------------------

Необходимо вывести номера которые свободны в указанный период.
Пример периода: 14.08.2013 - 16.08.2013

Помогите создать запрос без использования массива.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Даты пишутся в формате yyyy-mm-dd, у тебя все наоборот. Пока вопрос непонятен. Что значит вывести номера? Все? Или только начало и конец?
 

__Serghei__

Новичок
Даты в базе в формате yyyy-mm-dd.
Написал чтобы было понятно. Вывести все номера.

Пример запросов:
Если необходим период: 14.08.2013 - 16.08.2013 то запрос должен вывести: 2
Если необходим период: 25.08.2013 - 02.09.2013 то запрос должен вывести: 1 и 2
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Так стоп, я вижу что ты считаешь число дней между старт и энд. Вопрос только, почему во втором случае у тебя должно получиться 2 числа?
 

__Serghei__

Новичок
Пример запроса:
Нужен номер свободный с 25.08.2013 по 02.09.2013

Согласно данным из базы, номер 1 и 2 свободны в данный период.
 

WMix

герр M:)ller
Партнер клуба
__Serghei__ так типо?
Код:
startData <= 14.08.2013 OR endData >= 16.08.2013
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
А почему не 1 и 2? Я не пойму пока критерия выборки
 

__Serghei__

Новичок
А почему не 1 и 2? Я не пойму пока критерия выборки
номер 1 занят с 14-08-2013 по 17-08-2013 и с 21-09-2013 по 27-09-2013

поэтому запрос
startData <= 14.08.2013 OR endData >= 16.08.2013
выдаст номер 1 и 2, а правильный результат номер 2 (номер 2 занят с 18-08-2013 по 23-08-2013)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
__Serghei__
Так, уже лучше, теперь ответь на вопрос, почему номер 1 с датами 21-09-2013 по 27-09-2013 не подходит, а номер 2 с датами 2013-08-18 по 2013-08-23 - подходит?
 

__Serghei__

Новичок
номер 1 занят с 14-08-2013 по 17-08-2013 и с 21-09-2013 по 27-09-2013

запрос
startData <= 14.08.2013 OR endData >= 16.08.2013
не выдаст номер 1

условие запроса должно выполнятся по всем периодам одного номера.

[ если было просто я не потревожил своими запросами ]
 
Сверху