2013-08-19 4 views
0

У меня есть система онлайн-календаря, которую я использую для отслеживания концертов моей группы. Я хотел бы построить запрос, который отобразит все пятницы и субботы, которые в настоящее время не имеют запись, присвоенная им.Мой SQL-запрос для перечисления дат, у которых нет записей

например,

, если у меня есть запись в БД на пятницу 23 августа и в пятницу 30 августа (записей являются кабриолеты, которые забронированы), что бы запрос cirteria быть в выходной субботу 24 авг (как это имеет нет записи)?

Select * from ['giglist'] where ['gigdate'is in 'friday','saturday'] and ['gigdate' doesn't have a record]

Я, вероятно, установить дни недели, как переменные, так что пользователь может выполнить запрос на любой день или выбор дней.

Спасибо,

Даррен

+0

Вы можете предоставить свои таблицы? Это было бы простое «левое соединение» 'доступных_days' с« забронированными днями », где« забронированный день »равен нулю. – dognose

+0

Его только один стол «giglist», который имеет запись для каждой даты, которая забронирована. – dazzathedrummer

+1

Либо сделайте так, как dognose предложите (создайте таблицу утилиты), или обработайте логику для отсутствующих дней на уровне приложения (например, с небольшим количеством PHP) – Strawberry

ответ

0

если предполагая из вашего вопроса, есть поле gigdate типа даты, которая хранит информацию о дате и отдельное поле записи.

Тогда запрос будет,

select DAYNAME(gigdate), DAYOFMONTH(gigdate), MONTHNAME(gigdate) from giglist where 
DAYNAME(gigdate) in ('Friday', 'Saturday') and 
recordfield is NULL; 

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

+0

Спасибо, что я ищу список всех пятниц и суббот. В этом списке необходимо исключить даты, указанные в таблице giglist. – dazzathedrummer

Смежные вопросы