|
Запрос работает как цикл поясните | ☑ | ||
---|---|---|---|---|
0
sidalexsandr
03.12.15
✎
17:32
|
Поясните на примере следующего запроса:
ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, 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
Мимохожий Однако
03.12.15
✎
17:35
|
х.ня какая-то
|
|||
2
Мэс33
03.12.15
✎
17:35
|
Наливай да пей, что понимать то
|
|||
3
Мэс33
03.12.15
✎
17:36
|
(1) это не хня
|
|||
4
Мимохожий Однако
03.12.15
✎
17:37
|
Таааак, народ подтягивается ))
(0)До пятницы не дотерпел? |
|||
5
vhl
03.12.15
✎
17:48
|
что пояснить то? Работает - не трожь!
|
|||
6
mehfk
03.12.15
✎
17:52
|
(0) Без бутылки не разберешься. Наливай!
|
|||
7
Мэс33
03.12.15
✎
17:54
|
(6) Что пьешь? Коньячок есть, есть водочка. Пиво скоро принесут...
|
|||
8
Леха Дум
03.12.15
✎
17:57
|
запрос как запрос, вернет список дат на каждый день от заданной даты
|
|||
9
Nuobu
03.12.15
✎
18:01
|
(8) ээх ты!
|
|||
10
Мэс33
03.12.15
✎
18:04
|
(8) Совести у тебя нет.
|
|||
11
Nuobu
03.12.15
✎
18:08
|
(8) Не дал человеку самому логически дойти и осознать всю глубину и красоту запросов.
Он, ведь, теперь по каждому вопросу будет ветки плодить! |
|||
12
Мэс33
03.12.15
✎
18:10
|
(11) мы увидим много веток
|
|||
13
su_mai
03.12.15
✎
18:14
|
(0) Это что то Гениальное !
|
|||
14
sidalexsandr
03.12.15
✎
18:17
|
И так не одного ответа по теме.
|
|||
15
mehfk
03.12.15
✎
18:18
|
Ты б еще завтра пришел :)
|
|||
16
letni88
03.12.15
✎
18:24
|
предполагаю что создается нумерация
|
|||
17
letni88
03.12.15
✎
18:27
|
Хотя правильный ответ уже дан)
|
|||
18
Lama12
03.12.15
✎
18:29
|
Забавно :)
|
|||
19
Музон Хиггса
03.12.15
✎
18:51
|
Где-то я такое на sql видел.
|
|||
20
Лефмихалыч
03.12.15
✎
18:56
|
(0) что тебе пояснить-то?
|
|||
21
su_mai
03.12.15
✎
19:07
|
(0)
1. Запросы aa, bb, cc, dd задают массив чисел от 0 до 9 2. Запрос ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК ЧислоИнтервала ИЗ строит таблицу (Т1) путем тета-соединение этих массивов, таблица содержит все возможные комбинации значений в четырех колонках чисел 0-9. 3. Потом для каждой строки таблицы вычисляется выражение: aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d, которое в свою очередь представляет собой последовательность чисел от 0=(0000) до 9999, эти числа прибавляются к дате &НачалоПериода в качестве ДЕНЬ. В результате получаем массив 10000 дат из которой выбираем те даты ГДЕ ДОБАВИТЬКДАТЕ(...) <= &КонецПериода |
|||
22
su_mai
03.12.15
✎
19:08
|
(0) Можно провести рефакторинг исходного запроса, вынеся запрос формирующий массив чисел 0-9 в пакетный запрос, Наглядность выше:
ВЫБРАТЬ 0 КАК i ПОМЕСТИТЬ Массив ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, _1000.i * 1000 + _100.i * 100 + _10.i * 10 + _1.i) КАК ЧислоИнтервала ИЗ Массив КАК _1000, Массив КАК _100, Массив КАК _10, Массив КАК _1 ГДЕ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, _1000.i * 1000 + _100.i * 100 + _10.i * 10 + _1.i) <= &КонецПериода |
|||
23
Лефмихалыч
03.12.15
✎
19:23
|
это называется "порождающий запрос"
http://catalog.mista.ru/public/251678/ http://catalog.mista.ru/public/90367/ |
|||
24
sidalexsandr
03.12.15
✎
19:43
|
(22) Как работает тета-соединение ?
|
|||
25
sidalexsandr
03.12.15
✎
19:45
|
(23) Спасибо посмотрю
|
|||
26
Лефмихалыч
03.12.15
✎
20:08
|
(24) как декартово произведение множеств
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |