Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Обновить таблицу со списком дат количеством попаданий этих дат из диапазонов другой
|
|||
|---|---|---|---|
|
#18+
Признаться, со своим вопросом даже не знал, как правильно тему написать. Для отчёта создаётся временная табличка-календарик со списком дат и количеством пападаний. Для примера: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Есть другая табличка в которой имеются записи с указанием периода работы. Начальная и конечная даты. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Записей сотни тысяч за несколько лет. Они могут полностью попадать в расчётный период или частично. Или вообще не попадать: Хочется узнать, есть ли элегантный способ обновления временной таблички при такой ситуации? Что бы для каждого дня подсчитать количество записей, попавших в диапазон? Не считая варианта с курсором в голову приходи такой вариант: Код: sql 1. 2. 3. Но это хорошо для такого простого варианта. А когда реальный подзапрос состоит не из одной таблички, а из множества связанных с большим количеством условий, то такой вариант уже работает очень тяжело. Особенно когда надо сделать выборку за несколько месяцев. Как вариант сперва попробовать нужные записи из этой выборки вытащить ещё в одну временную табличку и уже потом её использовать в подзапросе. Но мне интересно, может быть есть какой-то более простой способ всё это подсчитать не делая подзапросы по каждому дню отдельно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 08:35 |
|
||
|
Обновить таблицу со списком дат количеством попаданий этих дат из диапазонов другой
|
|||
|---|---|---|---|
|
#18+
Maestro NVтакой вариант уже работает очень тяжело А что там с индексами на таблицах? Если их нет (как показано) - то как ни делай, всё одно хреново получится. А если их есть - то надо верстать решение в зависимости от того, каких именно их есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 09:12 |
|
||
|
Обновить таблицу со списком дат количеством попаданий этих дат из диапазонов другой
|
|||
|---|---|---|---|
|
#18+
Maestro NV, почитай про Merge. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 09:19 |
|
||
|
Обновить таблицу со списком дат количеством попаданий этих дат из диапазонов другой
|
|||
|---|---|---|---|
|
#18+
Maestro NV, в твоем исходном тестовом примере решение могло бы выглядеть примерно так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 09:36 |
|
||
|
Обновить таблицу со списком дат количеством попаданий этих дат из диапазонов другой
|
|||
|---|---|---|---|
|
#18+
Добрый Э - ЭхMaestro NV, почитай про Merge. Спасибо за наводку. Как-то так получилось, что про merge ничего и не знаю. Надо изучить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 11:45 |
|
||
|
Обновить таблицу со списком дат количеством попаданий этих дат из диапазонов другой
|
|||
|---|---|---|---|
|
#18+
Для дат используйте ISO написание, не зависящее от языковых настроек Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 11:49 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39581612&tid=1690553]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 391ms |

| 0 / 0 |
