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

Статус
В этой теме нельзя размещать новые ответы.

Eratt

Создатель
Регистрация
27 Фев 2009
Сообщения
43
Реакции
0
Есть база номеров с указанными занятых периодов с [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

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

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

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

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

Согласно данным из базы, номер 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
условие запроса должно выполнятся по всем периодам одного номера.

UPD:
Спасибо, хорошее решение:
Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:
select distinct number from table where number not in
(
select number from table
where startData <= endPeriod and endData >=startPeriod
)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху