|
Подскажите хитрую SQL-выборку по дате/DOW() из 3х таблиц
|
|||
---|---|---|---|
#18+
Привет! Есть 2 таблицы с одинаковой структурой: settings_workdays и custom_workdays. В обоих есть поля WDate типа DateTime и WDuration(int). В таблице settings_workdays есть 5 записей с датой от 2001 года, с 1го по 5е января, в них главное - время, а не дата. + Еще таблица Calendar в которой: есть поле Date типа Date и Holiday (int) (если 1 - значит выходной) Входящий параметр m.ldCheckDate - проверяемая дата, типа Date. Результат выборки - записи или их отсутствие в виде таблицы/курсора с двумя полями: WDate (DateTime) и WDuration(int). Нужно сделать выборку по входящему_параметру-дате, чтобы 1) учесть нет ли записи в Calendar с этой датой (поле Date) со значением 1 в поле Holiday, т.е. не выходной ли переданная дата, и в этом случае результат выборки должен быть пустым 2) если дата не выходной по Calendar и если дата есть в таблице custom_workdays, то сделать выборку записей только из этой таблицы (поля WDate, WDuration) и всё 3) если дата не выходной по Calendar и если даты нет в таблице custom_workdays, то делаем выборку записей из таблицы settings_workdays (поля WDate, WDuration) по условию DAYOFWEEK(входящего_параметра-даты)=DAYOFWEEK(settings_workdays.WDate) вот так не выдает в выборку вообще ничего: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 20:56 |
|
Подскажите хитрую SQL-выборку по дате/DOW() из 3х таблиц
|
|||
---|---|---|---|
#18+
сделал вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 23:35 |
|
Подскажите хитрую SQL-выборку по дате/DOW() из 3х таблиц
|
|||
---|---|---|---|
#18+
CTAC-KO, данных дайте ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2010, 10:11 |
|
Подскажите хитрую SQL-выборку по дате/DOW() из 3х таблиц
|
|||
---|---|---|---|
#18+
CTAC-KOПривет! Есть 2 таблицы с одинаковой структурой: settings_workdays и custom_workdays. В обоих есть поля WDate типа DateTime и WDuration(int). В таблице settings_workdays есть 5 записей с датой от 2001 года, с 1го по 5е января, в них главное - время, а не дата. + Еще таблица Calendar в которой: есть поле Date типа Date и Holiday (int) (если 1 - значит выходной) Входящий параметр m.ldCheckDate - проверяемая дата, типа Date. Результат выборки - записи или их отсутствие в виде таблицы/курсора с двумя полями: WDate (DateTime) и WDuration(int). Нужно сделать выборку по входящему_параметру-дате, чтобы 1) учесть нет ли записи в Calendar с этой датой (поле Date) со значением 1 в поле Holiday, т.е. не выходной ли переданная дата, и в этом случае результат выборки должен быть пустым 2) если дата не выходной по Calendar и если дата есть в таблице custom_workdays, то сделать выборку записей только из этой таблицы (поля WDate, WDuration) и всё 3) если дата не выходной по Calendar и если даты нет в таблице custom_workdays, то делаем выборку записей из таблицы settings_workdays (поля WDate, WDuration) по условию DAYOFWEEK(входящего_параметра-даты)=DAYOFWEEK(settings_workdays.WDate) не знаю,так попробуйте Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2010, 10:32 |
|
Подскажите хитрую SQL-выборку по дате/DOW() из 3х таблиц
|
|||
---|---|---|---|
#18+
поправил Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2010, 10:35 |
|
|
start [/forum/topic.php?fid=41&fpage=106&tid=1585601]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 345ms |
total: | 476ms |
0 / 0 |