[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вопрос по организации БД
bastar
есть следующая проблема.
В БД есть таблица cars в которой хранится информация о машинах, на эти машины имеются заказы, и машина становится не доступной на определенный период времени, например с 10.02.2012-12.02.2012, как лучше организовать хранение информации о машине и периоде в которой она не доступна, например можно добавить новую таблицу 'заказ' где и хранить информацию о машине и т.д. и как выбрать из всего списка свободную машину?



Спустя 17 минут, 59 секунд (17.02.2012 - 22:10) Placido написал(а):
А почему в таблицу с машинами не добавить поле с датой (скажем, `notAvailableBefore`). При заказе вписывать в это поле дату, до которой авто не доступно для заказа. При выборе машин добавить условие:
SELECT ... WHERE NOW() > `notAvailableBefore`;

Спустя 1 минута, 43 секунды (17.02.2012 - 22:12) bastar написал(а):
такая идея есть, но фишка в том, что машина может быть выбрана 3 или 4 раза, а в самой таблице cars хранится только информация о машинах, поэтому и спрашиваю где лучше все это дело хранить )

Спустя 2 минуты, 49 секунд (17.02.2012 - 22:15) nugle написал(а):
bastar
у тебя правильные рассуждения были в первом посте

Спустя 4 минуты, 8 секунд (17.02.2012 - 22:19) bastar написал(а):
nugle
Вы про создании новой таблицы заказ?

Спустя 29 минут, 29 секунд (17.02.2012 - 22:48) nugle написал(а):
да, именно

Спустя 5 минут, 1 секунда (17.02.2012 - 22:53) bastar написал(а):
nugle
допустим есть таблица Заказ с полями: Марка машины и дата(с какого и по какое число машина занята). Как учитывая эту таблицу из таблицы cars выбрать свободные машины для определенной даты?

Спустя 3 минуты, 3 секунды (17.02.2012 - 22:56) nugle написал(а):
bastar
Сравнивай с NOW() sql

Спустя 1 минута, 24 секунды (17.02.2012 - 22:58) bastar написал(а):
nugle
а можно по подробнее откуда и что с чем сравнивать? я просто не могу догнать откуда и что сравнивать

Спустя 6 минут, 6 секунд (17.02.2012 - 23:04) nugle написал(а):
в каком виде у тебя записано (с какого и по какое число занята машина)? одно поле, два и напиши тут

Спустя 2 минуты, 50 секунд (17.02.2012 - 23:07) bastar написал(а):
nugle
Таблица cars(id, Carname, CarClass)
Таблица order(id, car, startDate, EndDate)
вот эти 2 таблицы и на их основе из таблицы cars вывести все доступные машины например с 12.02.2012 по 15.02.2012 вот суть задачи

Спустя 5 минут, 4 секунды (17.02.2012 - 23:12) nugle написал(а):
вот такой вывод
SELECT * FROM `order` WHERE NOW() > `EndDate`;

потом при помощи join соединяешь две таблицы

Спустя 21 час, 32 минуты, 19 секунд (18.02.2012 - 20:44) Лена написал(а):
Неправильно.

Таблица order(id, id_car, startDate, EndDate)

startDate может быть не равно NOW(). Например, срок, с которого машина недоступна, может наступить через 2 дня.

В таблицу заказов вы пишете все НЕДОСТУПНЫЕ машины. А выбирать вы хотите ДОСТУПНЫЕ, т.е. взять надо те машины, которых нет в таблице order.
Через LEFT JOIN надо соединить 2 таблицы.

Спустя 2 минуты, 11 секунд (18.02.2012 - 20:46) nugle написал(а):
Лена
это лишь пример, в какую сторону двигаться, правильнее было бы так + join
SELECT * FROM `order` WHERE NOW() > `EndDate` or NOW()<'startDate';

Спустя 19 минут, 59 секунд (18.02.2012 - 21:06) Guest написал(а):

SELECT *
FROM `car` c
LEFT JOIN `order` o ON c.id = o.car_id
WHERE o.id IS NULL
OR
(
NOW( ) < o.startDate
OR NOW( ) > o.EndDate
)

Спустя 1 минута, 24 секунды (18.02.2012 - 21:07) Лена написал(а):
предыдущее сообщение - мое, забыла зарегистрироваться
Выбираем не заказы, а машины

SELECT *FROM `car` c LEFT JOIN `order` o ON c.id = o.car_idWHERE o.id IS NULLOR (NOW( ) < o.startDateOR NOW( ) > o.EndDate)

Спустя 3 часа, 24 минуты, 40 секунд (19.02.2012 - 00:32) bastar написал(а):
nugle
а как именно после выбора свободных машин добавить этот Join? я пробовал так:

SELECT car FROM order WHERE firstdate < '$firstDate' OR seconddate > '$secondDate' LEFT JOIN cars ON order.car = cars.cardata"

но выдает ошибку..
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.