![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дни недели [D7, MSSQL]
Iddqd © (2004-07-06 11:27:00)Уважаемые мастера, помогите решить следующую задачу:
В таблице есть строковое поле 'DAYS' в формате : пвсчпсв (обозначающее соотвественно понедельник, вторник и т.д). Оно может принимать значения : п_сч_св или _____св и т.д. Пользователь в программе выбирает с помощью чекбоксов нужные дни недели и соотвественно должны отразиться те записи которые включают эти дни. Пока это решено на уровне самой программы. Т.е выбираются все записи а уж потом не нужные отсеиваются. Как сделать подобное в SQL запросе.
Ega23 (2004-07-06 14:30:00) [1]А кто автор-то? :о)
Я что-то уже совсем запутался...
Курдль (2004-07-06 14:26:00) [2]
> Ega23 © (06.07.04 14:23) [41]
> А, кстати, что смешного? В нашем проекте именно так и построено.
В этом - ничего смешного. В моих проектах тоже есть связки с таблицами "день недели" (до дня месяца дела не доходило).
Смешно то, что автор упорно "стоит на своем" ...и ему не больно :)
Соловьев (2004-07-06 14:25:00) [3]
> [42] Курдль © (06.07.04 14:23)
нет, как раз по дням месяца вопрос был [35]
Ega23 (2004-07-06 14:23:00) [4]В нашем проекте именно так и построено.
Не совсем так, конечно, но очень похоже.
Курдль (2004-07-06 14:23:00) [5]
> Соловьев © (06.07.04 14:16) [36]
> select *
> from table
> where extract(day from field_date) in (2,5,12,29,30)
Задача-то ставилась обратная! Не отобрать записи по датам, а отобрать записи, в которых указаны определенные дни недели.
Ega23 (2004-07-06 14:23:00) [6]Ну это же высший пилотаж! Я и побоялся такое предложить -
ассоциативная связь (отношение "многие-ко-многим") между обсуждаемой таблицей и таблицей "дни недели"! :)
А, кстати, что смешного? В нашем проекте именно так и построено.
Курдль (2004-07-06 14:20:00) [7]
> Fay © (06.07.04 14:13) [35]
> Не согласитесь привести пример запроса по числам месяца?
select * from TABLE1
where DAY_01 = True
and DAY_01 = True
and DAY_02 = False
and DAY_03 = False
...
and DAY_31 = True
> Соловьев © (06.07.04 14:09) [33]
> нужно смотреть на предметную область - возможно там лучше
> будет хранение по конкретной дате в отдельной записи
Ну это же высший пилотаж! Я и побоялся такое предложить -
ассоциативная связь (отношение "многие-ко-многим") между обсуждаемой таблицей и таблицей "дни недели"! :)
Ega23 (2004-07-06 14:19:00) [8]select *
from table
where extract(day from field_date) in (2,5,12,29,30)
extract - это что?
Fay (2004-07-06 14:19:00) [9]2Соловьев © (06.07.04 14:16) [36]
1) не extract, а DatePart
2) я имел ввиду запрос с участием 31-го поля в where
Ega23 (2004-07-06 14:17:00) [10]7 и даже 31 - это не "куча". У СУБД от 31 поля типа SmallInt(а чаще всего так интерпретируется логическое поле) харя не треснет.
Однако, 31 CheckBox не сильно украсит пользовательский интерфейс.
Если уж надо инфу по дням делать, то тогда нужна ещё одна таблица соответствия.
Однако, 31 CheckBox не сильно украсит пользовательский интерфейс.
Это точно, но могу дать ситуацию, где от этого не уйти.
Соловьев (2004-07-06 14:16:00) [11]
> Не согласитесь привести пример запроса по числам месяца?
select *
from table
where extract(day from field_date) in (2,5,12,29,30)
Fay (2004-07-06 14:13:00) [12]2Курдль © (06.07.04 14:06) [32]
Не согласитесь привести пример запроса по числам месяца?
Соловьев (2004-07-06 14:13:00) [13]
> Однако, 31 CheckBox не сильно украсит пользовательский интерфейс
это да:)
думаю лучшим способом в таком случае будет что-то типа календаря где с Ctrl можно выделить несколько дат.
Соловьев (2004-07-06 14:09:00) [14]действительно для дней нет смысла создавать поля:)
нужно смотреть на преметную область - возможно там лучше будет хранение по конкретной дате в отдельной записи
Курдль (2004-07-06 14:06:00) [15]
> Fay © (06.07.04 13:57) [27]
> Те, кто предлагает создать кучу полей.
> Ega23 © (06.07.04 13:59) [28]
> Не, не поймут. Хорошо ещё речь идет не о числах месяца 8)
> Числа месяца, кстати, тоже отлично в int влезут :о)
7 и даже 31 - это не "куча". У СУБД от 31 поля типа SmallInt(а чаще всего так интерпретируется логическое поле) харя не треснет.
Однако, 31 CheckBox не сильно украсит пользовательский интерфейс.
И еще - по моим наблюдениям многие реплики на форуме проходят не под лозунгом "я знаю, как лучше", а "я придумал еще один прикольный способ!"
Ega23 (2004-07-06 14:03:00) [16]Fay © (06.07.04 14:02) [29]
Само собой. :-)
Ega23 (2004-07-06 14:03:00) [17]Fay © (06.07.04 14:02) [29]
Само собой. :-)
Fay (2004-07-06 14:02:00) [18]Но 31 поле намного нагляднее 8)
Ega23 (2004-07-06 13:59:00) [19]Не, не поймут. Хорошо ещё речь идет не о числах месяца 8)
Числа месяца, кстати, тоже отлично в int влезут :о)
Fay (2004-07-06 13:57:00) [20]2Ega23 © (06.07.04 13:44) [26]
Те, кто предлагает создать кучу полей.