Помогите составить Базу.

wildarp

Новичок
Помогите составить Базу.

Привет всем. Суть вопроса такой

есть таблица 1 с описанием жилья для сдачи приезжим

Примерно поля для этой таблицы

FLATS

id - id
addr - адрес
price - цена
conder -кондиционер
sea - вида на море


и таблица клиентов

CLIENTS

id
fio - Ф.И.О.
date_a - дата прибытия
data_b дата отезда
flat_id квартира в которую он заезжает


Ситуация следующая допустим квартира с id=1 занята клиентом с id=1 с 2008-01-01 по 2008-01-10 и этаже квартира занята клиентом с id=2 с 2008-01-20 по 2008-01-30.

При ситуации что необходимо найти квартиру клиенту с id=3 в промежутке с 2008-01-12 по 2008-01-18 т.е. эта дата когда в список квартир должна попасть эта самая квартира с id=1 так как в этот промежуток времени она свободна. Как это сделать не могу сообразить, возможно лучше вообще перестроить БД. посоветуйте плз. Т.е. помимо пожеланий клиента какая должна быть квартира кондиционер, вид на море, она должна попасть в список квартир с датой когда она не занята или именно промежуток того времени между клиентами когда она не занята. Уфф надеюсь более менее объяснил. Т.е. тут нужно видимо както вычислять даты в промежутке между датой отъезда первого клиента и датой заезда второго клиента.

Спасибо.
 

Gas

может по одной?
вроде как-то так, не тестил
[sql]
SELECT f.*
FROM `flast` AS f
LEFT JOIN `client` AS c ON c.flat_id=f.id
WHERE c.date_a < 'дата_отъезда' AND c.data_b > 'дата_прибытия' AND 'условия_по_таблице_flasts'
GROUP BY f.id
HAVING COUNT(c.flat_id)=0;
[/sql]
 

wildarp

Новичок
Gas

Спасибо

Но тут некоторая загвоздка тут запрос проверяет квартиры в по таблице clients на предмет занятости этих квартир, но не выводит остальных квартир которые не заняты вообще ниодним клиентом, т.е. информации по ним нет в таблице клиентов.

Вот что мне нужно в точности

Выбрать все квартиры которые не заняты в заданном промежутке + те квартиры о которых нет информации в таблице клиентов.



Т.е. фактически так выбираем заглядываем в таблицу клиентов проверяем промежуток времени в тех квартирах которые там есть, если условие совпадает и квартира доступна то выводим ее в общую массу квартир о которых нет информации в таблице клиенты.

-~{}~ 21.04.08 12:23:

Что никто не может помочь?

Может нужно ввести дополнительную таблицу чтоб окончательно увязать Flats и Clients?
 

Gas

может по одной?
мой косяк :)
попробуй так
[sql]
SELECT f . *
FROM `flast` AS f
LEFT JOIN `client` AS c ON c.flat_id = f.id AND c.date_a < 'дата_отъезда' AND c.data_b > 'дата_прибытия'
WHERE 'условия_по_таблице_flasts'
GROUP BY f.id
HAVING COUNT( c.flat_id ) = 0;
[/sql]
 
Сверху