SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.02.2012 21:11:58

alexiy
Участник
Зарегистрирован: 19.02.2012
Сообщений: 21

Нужно получить список свободных машин на конкретный период времени

Есть 2 таблицы cars & calendar
cars состоит из 2-ух полей: cardata(varchar) & class(varchar)
calendar состоит из 4-ех полей: id, car, startDate, endDate
Задача состоит в том, чтобы зная период времени, например 12/02/2012- 15/02/2012 из таблицы cars выбрать все свободные машины, которые не заняты на данный период
сам пробовал делать так:


SELECT cardata FROM cars LEFT JOIN calendar ON cars.cardata <> calendar.car WHERE calendar.startdate = '12/02/2012' OR calendar.endDate = '15/02/2012'
'

буду очень признателен за помощь

Неактивен

 

#2 19.02.2012 23:01:26

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Нужно получить список свободных машин на конкретный период времени

Сформулируйте словами как найти машины, которые являются свободными (не ясно, что у вас хранится в данных).

Неактивен

 

#3 19.02.2012 23:28:30

alexiy
Участник
Зарегистрирован: 19.02.2012
Сообщений: 21

Re: Нужно получить список свободных машин на конкретный период времени

vasya написал:

Сформулируйте словами как найти машины, которые являются свободными (не ясно, что у вас храниться в данных).

сейчас опишу подробнее
таблица  cars
cardata||class
-------||-----
Audi    ||A
BMW   ||B
Lexus  ||C
VW     ||A
Toyota||B
°/////////////////////
calendar
id||car---- ||Startdate  ||Enddate
1||AudI     ||12/02/2012||17/02/2012
2||BMW     ||16/02/2012||20/02/2012
3||Toyota  ||17/02/2012||29/02/2012
//////////////////////////////////////////////
Есть период времени 12/02/2012 - 15/02/2012;
Моей целью является получить следующие машины: Lexus, VW. & BMW, Toyota(т.к. они свободны в указаный период времени)
думаю что теперь все стало яснее

Неактивен

 

#4 19.02.2012 23:41:49

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Нужно получить список свободных машин на конкретный период времени

select cardata FROM cars LEFT JOIN
(select car from calendar where startdate >= '12/02/2012' and endDate <= '15/02/2012') t on cars.cardata = t.car
where t.car is null;

Неактивен

 

#5 19.02.2012 23:55:40

alexiy
Участник
Зарегистрирован: 19.02.2012
Сообщений: 21

Re: Нужно получить список свободных машин на конкретный период времени

vasya написал:

select cardata FROM cars LEFT JOIN
(select car from calendar where startdate >= '12/02/2012' and endDate <= '15/02/2012') t on cars.cardata = t.car
where t.car is null;

по идее все работает круто, но Audi он выбирает все равно, но она же не доступна на 12/02/2012-15/02/2012

Неактивен

 

#6 20.02.2012 00:05:45

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Нужно получить список свободных машин на конкретный период времени

Выбирает Audi, а не доступна AudI smile
Введите в таблице cars числовой идентификатор и связывайте по нему.

Неактивен

 

#7 20.02.2012 01:49:57

alexiy
Участник
Зарегистрирован: 19.02.2012
Сообщений: 21

Re: Нужно получить список свободных машин на конкретный период времени

vasya написал:

Выбирает Audi, а не доступна AudI smile
Введите в таблице cars числовой идентификатор и связывайте по нему.

намекаете на то, что в таблице календарь, в ячейке car будет храниться идентификатор машины, а не название модели?

Неактивен

 

#8 20.02.2012 02:55:18

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Нужно получить список свободных машин на конкретный период времени

Да.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson