я следующие таблицыПроверьте DAYOFWEEK() существует между диапазоном дат
Specialoffer
Id (int)
ValidFrom (date)
ValidTo (date)
SpecialOfferExcludedDays
Id (int) (ForeignKey with Table1.Id)
DayId (int)
Days
DayId (int) (ForeignKey with Table3.DayId)
Name (text)
Specialoffer содержит
'1', '2013-01-01', '2013-01-14'
'2', '2013-02-01', '2013-02-05'
'3', '2013-11-21', '2013-11-25'
SpecialOfferExcludedDays содержит
'3', '4'
Дни содержит
'1', 'Sunday'
'2', 'Monday'
'3', 'Tuesday'
'4', 'Wednesday'
'5', 'Thursday'
'6', 'Friday'
'7', 'Saturday'
Я пытаюсь написать запрос для достижения следующего;
Получить все Идентификаторы из таблицы SpecialOffers между заданной датой диапазоном ValidFrom и ValidTo
Исключить любые записи из SpecialOffers, если существует день (например вторник) в SpecialOfferExcludedDays для данного идентификатора. Это не ограничивается одним днем. Например, идентификатор может быть исключен в понедельник и субботу
Мой запрос выглядит примерно так на данный момент без каких-либо логики для дней
SELECT Id
FROM SpecialOffers
WHERE (ValidFrom > '2013-11-25'
AND ValidTo < '2013-11-30')
Так, например, я делаю заказ сегодня для бронирования гостиницы, в ночь на 1 декабря 2013 года. Дайте мне все возможные специальные предложения, которые действительны для 1 декабря. Принимая во внимание любые специальные предложения, которые недействительны в определенные дни
EDIT
Образец сделки может получить все удостоверения личности, где пребывание находится между 1 декабря и 25 декабря, за исключением пятниц и суббот.
Это можно сделать? Или я лучше буду писать эту логику в своем приложении C#.
Не могли бы вы дать некоторые дополнительные данные и ваши ожидаемые результаты? –
Я добавил некоторые дополнительные данные – Tommassiov
@ Tommo1977 зачем хранить день недели? Это определенно можно извлечь из вашей даты. Нет? –