All
Надеюсь, это будет иметь смысл, но если нет, я могу подробнее рассказать.
У меня есть база данных, которая является серверной частью системы бронирования событий.
Определено 5 таблиц, 3 из которых используются для данных о событиях, а 2 - для бронирования. Таблицы определены следующим образом ...
CREATE TABLE Events
(
EventID INT IDENTITY(1,1) NOT NULL,
Name NVARCHAR(50) NULL,
IsActive BIT NOT NULL,
Notes NTEXT NULL
)
CREATE TABLE EventDates
(
EventDateID INT IDENTITY(1,1) NOT NULL,
EventID INT NOT NULL,
EventDate DATE NULL,
Notes NTEXT NULL
)
CREATE TABLE EventDateTimes
(
EventDateTimeID INT IDENTITY(1,1) NOT NULL,
EventDateID INT NOT NULL,
StartTime NVARCHAR(5) NULL,
FinishTime NVARCHAR(5) NULL,
Cost SMALLMONEY NULL
)
Причиной для таблиц выше является соответствие следующим критериям.
- одно событие может выполняться в течение нескольких дней
- каждый из этих дней может иметь несколько времен начала
- каждое из этих времен может иметь разные затраты, в зависимости от времени начала / окончания
Мои таблицы бронирования определены следующим образом ...
CREATE TABLE Bookings
(
BookingID INT IDENTITY(1,1) NOT NULL,
CustomerID INT NOT NULL,
EventID INT NOT NULL,
BookingDate DATE NULL,
AmountPaid SMALLMONEY NULL,
Discount SMALLMONEY NULL
)
CREATE TABLE BookingDates
(
BookingDateID INT IDENTITY(1,1) NOT NULL,
BookingID INT NOT NULL,
EventDateTimeID INT NOT NULL
)
Каждое бронирование имеет ссылку на общее событие и отслеживает общую сумму, уплаченную на данный момент за событие (клиенты могут платить за каждый день / время мероприятия отдельно или в целом), а также скидку, которая применяется к общему количеству событие (на основе количества забронированных дней).
Что меня действительно смущает, так это попытка определить сумму, заплаченную за бронирование между определенными датами. Вполне может быть, что моя раскладка стола полная и полная ерунда и что есть гораздо лучший способ добиться того, что я пытаюсь сделать. Или я слишком много усложнил.
Например, я хочу найти общую сумму, заплаченную за все заказы в период с 1 мая 2011 г. по 31 мая 2011 г.
Я думаю, что у меня может быть ВЛЕВО, ПРАВО и ВНУТРЕННИЙ СОЕДИНЯТЬСЯ, чтобы совершить путаницу.
Пожалуйста, кто-нибудь может дать совет.
Заранее спасибо,
Кев