![]() |
![]() |
![]() |
|
Не помогли бы разжевать логику работы данного запроса | ☑ | ||
---|---|---|---|---|
0
inkvizitr
27.09.14
✎
20:43
|
ЕСть запрос, который разбивает по дням любой заданный период, как его не читал не пойму его логику, как у этого шайтан запроса так получается?
ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Период {ВЫБРАТЬ Период} ИЗ (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК aa ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК b ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК bb ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК c ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК cc ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК d ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК dd ПО (ИСТИНА) ГДЕ aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) |
|||
1
User_Agronom
27.09.14
✎
20:48
|
Разбей на подзапросы и покури каждый.
Тупо выполни и глянь какая хреновина получается. |
|||
2
mastodont
27.09.14
✎
21:04
|
(0) какая часть конкретно не понятна?
(1) +1 |
|||
3
raykom
27.09.14
✎
21:10
|
(0)Вот это реально троллинг в программировании )))
Как минимум ты многого нужного не запостил, например - "РАЗНОСТЬДАТ" А как максимум - вся тайна - в разности выражений ДОБАВИТЬКДАТЕ и РАЗНОСТЬДАТ |
|||
4
raykom
27.09.14
✎
21:21
|
+(3)Но как факт - чувак, который написал это - реально классный кодер.
|
|||
5
zak555
27.09.14
✎
21:29
|
4ре таблицы с 10 строками каждая
делается полное соединение по ней |
|||
6
raykom
27.09.14
✎
21:32
|
(5)Ты умен. Не сомневался.
Я однозначно подозревал, что речь идет о манипуляции с массивом данных записываемых в стабильный формат. Но все равно - от кто это писанул - реально программист. |
|||
7
zak555
27.09.14
✎
21:59
|
(6) а какие проблемы ?
формируем таблицу 4х10 000 далее строкой ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Период формируем одну колонку, состоящую из НачалоПериода НачалоПериода + 1день НачалоПериода + 2день НачалоПериода + 3день .... НачалоПериода + 9999день ну а строкой ГДЕ aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) отсекаем лишнее |
|||
8
zak555
27.09.14
✎
23:15
|
но проще переписать запрос в читаемый вид :
ВЫБРАТЬ 0 КАК Колонка ПОМЕСТИТЬ ВТ ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_тысячи.Колонка КАК Тысячи, ВТ_сотни.Колонка КАК Сотни, ВТ_десяток.Колонка КАК Десятки, ВТ_единиц.Колонка КАК Единицы ПОМЕСТИТЬ ВТТ ИЗ ВТ КАК ВТ_тысячи ПОЛНОЕ СОЕДИНЕНИЕ ВТ КАК ВТ_сотни ПОЛНОЕ СОЕДИНЕНИЕ ВТ КАК ВТ_десяток ПОЛНОЕ СОЕДИНЕНИЕ ВТ КАК ВТ_единиц ПО (ИСТИНА) ПО (ИСТИНА) ПО (ИСТИНА) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, ВТТ.Тысячи * 1000 + ВТТ.Сотни * 100 + ВТТ.Десятки * 10 + ВТТ.Единицы) КАК Период ИЗ ВТТ КАК ВТТ ГДЕ ВТТ.Тысячи * 1000 + ВТТ.Сотни * 100 + ВТТ.Десятки * 10 + ВТТ.Единицы <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) |
|||
9
Drac0
27.09.14
✎
23:33
|
Не любой период, а период не более 27 лет с хвостиком.
|
|||
10
zak555
27.09.14
✎
23:41
|
(9) вот тебе почти на 274 года
ВЫБРАТЬ 0 КАК Колонка ПОМЕСТИТЬ ВТ ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_десяткиТысяч.Колонка КАК ДестяткиТысяч, ВТ_тысячи.Колонка КАК Тысячи, ВТ_сотни.Колонка КАК Сотни, ВТ_десяток.Колонка КАК Десятки, ВТ_единиц.Колонка КАК Единицы ПОМЕСТИТЬ ВТТ ИЗ ВТ КАК ВТ_десяткиТысяч ПОЛНОЕ СОЕДИНЕНИЕ ВТ КАК ВТ_тысячи ПОЛНОЕ СОЕДИНЕНИЕ ВТ КАК ВТ_сотни ПОЛНОЕ СОЕДИНЕНИЕ ВТ КАК ВТ_десяток ПОЛНОЕ СОЕДИНЕНИЕ ВТ КАК ВТ_единиц ПО (ИСТИНА) ПО (ИСТИНА) ПО (ИСТИНА) ПО (ИСТИНА) ; ////////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, ВТТ.ДестяткиТысяч *10000 + ВТТ.Тысячи * 1000 + ВТТ.Сотни * 100 + ВТТ.Десятки * 10 + ВТТ.Единицы) КАК Период ИЗ ВТТ КАК ВТТ ГДЕ ВТТ.ДестяткиТысяч *10000 + ВТТ.Тысячи * 1000 + ВТТ.Сотни * 100 + ВТТ.Десятки * 10 + ВТТ.Единицы <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) |
|||
11
Drac0
27.09.14
✎
23:42
|
(10) Че там со скоростью? :-)
|
|||
12
zak555
27.09.14
✎
23:43
|
(11) летает
|
|||
13
EvgeniuXP
28.09.14
✎
00:02
|
(0) это уже не надо, пару галок ставишь и будет тебе запрос :)
|
|||
14
Рэйв
28.09.14
✎
00:08
|
Про Итоги Периодами уже говорили? Или так потролили просто?:-)
|
|||
15
zak555
28.09.14
✎
00:23
|
(14) начинай
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |