|
Рекурсивный JOIN
|
|||
---|---|---|---|
#18+
Есть некая VIEW: Код: sql 1. 2. 3. 4. 5.
Суть в том, что она суммирует некоторые данные за сегодняшний день и два последующих, а потом эти данные используются в другом месте (через join). Но в ней есть косяк: если нет данных за сегодняшний день, но есть за завтрашний - то, естественно, на сегодняшнюю дату в ней ничего не будет. Вопрос: как её исправить, чтобы она всё равно суммировала данные на сегодня, если есть что-то подходящее завтра или послезавтра?... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2020, 19:02 |
|
Рекурсивный JOIN
|
|||
---|---|---|---|
#18+
Переделал в итоге так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Может какие-нибудь советы/замечания будут? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2020, 19:40 |
|
Рекурсивный JOIN
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2020, 22:27 |
|
Рекурсивный JOIN
|
|||
---|---|---|---|
#18+
hvlad, Там принципиально чтобы отдельные даты были отдельными строками, т.е. сумма выглядит как-то так: Код: sql 1.
В новом варианте я просто сдвигаю поля на одно после UNION ALL и суммирую уже только по одному полю. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2020, 01:03 |
|
Рекурсивный JOIN
|
|||
---|---|---|---|
#18+
alekcvp Вопрос: как её исправить, чтобы она всё равно суммировала данные на сегодня, если есть что-то подходящее завтра или послезавтра?... А уже к нему прицеплять левые самтэйблы. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 13:07 |
|
Рекурсивный JOIN
|
|||
---|---|---|---|
#18+
WildSery Брать правой таблицей календарь. А уже к нему прицеплять левые самтэйблы. Логично. А можно как-то календарь загнать в SELECT? Типа Код: sql 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 14:08 |
|
Рекурсивный JOIN
|
|||
---|---|---|---|
#18+
Симонов Денис alekcvp, https://habr.com/ru/post/509050/ Это производственный календарь, с выходными и праздниками. Мне же нужен тупо счётчик от и до. Можно сделать ХП, да. Но, возможно, можно как-то тупо в SELECT загнать? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 14:35 |
|
Рекурсивный JOIN
|
|||
---|---|---|---|
#18+
alekcvp, возможно. Но через WITH RECURSIVE вы будете ограничены 1023 днями. А джойнить левые таблицы для этого это костыль Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 14:41 |
|
Рекурсивный JOIN
|
|||
---|---|---|---|
#18+
Симонов Денис Но через WITH RECURSIVE вы будете ограничены 1023 днями ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 14:49 |
|
Рекурсивный JOIN
|
|||
---|---|---|---|
#18+
Симонов Денис Но через WITH RECURSIVE вы будете ограничены 1023 днями. 1023 дня - это почти 3 года. Кому нужно столько информации на экране?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 14:56 |
|
Рекурсивный JOIN
|
|||
---|---|---|---|
#18+
Симонов Денис alekcvp, Но через WITH RECURSIVE вы будете ограничены 1023 днями Обычно обхожу ограничение через процедуру, вывожу сколько требуется, порциями по 1000 строк: Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 15:57 |
|
Рекурсивный JOIN
|
|||
---|---|---|---|
#18+
По всевозможным счётчикам тем в форуме уже множество. Вот из свежего 22214012 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 16:40 |
|
|
start [/forum/topic.php?fid=40&fpage=10&tid=1560175]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
161ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 236ms |
total: | 490ms |
0 / 0 |