|
Запрос, как избавиться от запроса в цикле. | ☑ | ||
---|---|---|---|---|
0
Пеппи
17.08.12
✎
17:47
|
Имеется простой запрос
ВЫБРАТЬ РаботникиОрганизацийСрезПоследних.Период, РаботникиОрганизацийСрезПоследних.Сотрудник, РаботникиОрганизацийСрезПоследних.Категория, РаботникиОрганизацийСрезПоследних.Разряд, РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Дата, ) КАК РаботникиОрганизацийСрезПоследних Мне нужно на заданный период получить данные из этого регистра. Как это можно сделать не используя запроса в цикле. Знаю что есть понятие как Цикл в запросе. |
|||
1
Fragster
гуру
17.08.12
✎
17:47
|
тебе на каждую дату?
|
|||
2
Пеппи
17.08.12
✎
17:48
|
да
|
|||
3
Fragster
гуру
17.08.12
✎
17:48
|
эта неделя - рекордсменю только я 4 темы таких нашел, и еще пеару, где это предлагали как решение Книга знаний: Срез последних на каждую дату в запросе
|
|||
4
Fragster
гуру
17.08.12
✎
17:48
|
*пеару = пару
|
|||
5
Пеппи
17.08.12
✎
17:50
|
(3) это не то что мне нужно.
Я знаю про такой запрос ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачДата, День, РазностьДат.НомерДняИзДиапазона) КАК Дата ИЗ ( ВЫБРАТЬ 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 <= &КолДнейМеждуДатами) КАК РазностьДат УПОРЯДОЧИТЬ ПО Дата Но как можно в параметр подставить даты из этого запроса. У меня не получилось. |
|||
6
Fragster
гуру
17.08.12
✎
17:57
|
(5) фотку нормальную в профиль поставь - сделаю текст
|
|||
7
Пеппи
17.08.12
✎
17:58
|
поставила )
|
|||
8
ЧашкаЧая
17.08.12
✎
17:58
|
(5) Это то что нужно. Даты как формируются? Все дни от даты начала до даты конца или как-то по-другому?
|
|||
9
Пеппи
17.08.12
✎
17:59
|
(8) да, за любой период. например за 1 квартал.
|
|||
10
Пеппи
17.08.12
✎
18:01
|
запрос в (5) выводит список дат, мне нужно их как то подставлять в параметр в запрос в (0). А я не знаю как.
|
|||
11
Reset
17.08.12
✎
18:02
|
(5) соединить с физической таблицей РС по (5).Дата <= РС.Период и сгруппировать по нужныи измерениям, взяв максимум по периоду из регистра
|
|||
12
ЧашкаЧая
17.08.12
✎
18:02
|
(10) В (3) не только запрос (5)
|
|||
13
Жан Пердежон
17.08.12
✎
18:02
|
(6) гы-гы, делай теперь
|
|||
14
ЧашкаЧая
17.08.12
✎
18:03
|
(13) Редиска.
|
|||
15
Fragster
гуру
17.08.12
✎
18:04
|
я-то сделаю
|
|||
16
Reset
17.08.12
✎
18:04
|
(11) Дата => РС.Период
пятница :( |
|||
17
Пеппи
17.08.12
✎
18:04
|
(11) пробовала уже, запрос не выдает то что нужно мне. Мне нужно на каждый день, а в (3) дает только по последнему состоянию. это разные вещи.
|
|||
18
Пеппи
17.08.12
✎
18:06
|
Пока делаю запрос в цикле.
|
|||
19
Reset
17.08.12
✎
18:08
|
(17) Запрос (первый) по ссылке из (3) делает аналогично, только вместо (5) используются курсы валют
|
|||
20
Fragster
гуру
17.08.12
✎
18:13
|
Что там измерением является?
|
|||
21
Fragster
гуру
17.08.12
✎
18:14
|
ВЫБРАТЬ
ЦеныНоменклатуры.Период, ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.Цена ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ГДЕ ЦеныНоменклатуры.Период МЕЖДУ ДобавитьКДате(&ДатаНачала, День, 1) И &ДатаОкончания |
|||
22
Пеппи
17.08.12
✎
18:15
|
Может я не так объяснила.
Мне нужно так 01.01.12 Иванов 01.01.12 Петров 02.01.12 Иванов 02.01.12 Петров ... 31.01.12 Иванов 31.01.12 Петров |
|||
23
Fragster
гуру
17.08.12
✎
18:16
|
(22) что является измерениями? в запросе (20) в таблице Подготовка - добавляешь группировка по ним, в результирующей таблице - их добавляешь в поля связей.
принцип формирования остального должен быть понятен |
|||
24
Пеппи
17.08.12
✎
18:18
|
(23) хорошо, попробую. спасибо.
|
|||
25
Пеппи
17.08.12
✎
18:19
|
(23) измерения- сотрудники, организация, период, все остальные поля в ресурсах
|
|||
26
ЧашкаЧая
17.08.12
✎
18:20
|
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, 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 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РаботникиОрганизацийСрезПоследних.Период, РаботникиОрганизацийСрезПоследних.Сотрудник, РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации, РаботникиОрганизацийСрезПоследних.Должность ПОМЕСТИТЬ ВТРаботникиОрганизацийПоПериодам ИЗ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизацийСрезПоследних ГДЕ РаботникиОрганизацийСрезПоследних.Период <= &КонецПериода ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВложенныйЗапрос.Период, ВложенныйЗапрос.Сотрудник, ВТРаботникиОрганизацийПоПериодам.ПодразделениеОрганизации, ВТРаботникиОрганизацийПоПериодам.Должность ИЗ (ВЫБРАТЬ ВТПериоды.Период КАК Период, ВТРаботникиОрганизацийПоПериодам.Сотрудник КАК Сотрудник, МАКСИМУМ(ВТРаботникиОрганизацийПоПериодам.Период) КАК ПериодЗаписиРегистра ИЗ ВТПериоды КАК ВТПериоды ЛЕВОЕ СОЕДИНЕНИЕ ВТРаботникиОрганизацийПоПериодам КАК ВТРаботникиОрганизацийПоПериодам ПО ВТПериоды.Период >= ВТРаботникиОрганизацийПоПериодам.Период СГРУППИРОВАТЬ ПО ВТПериоды.Период, ВТРаботникиОрганизацийПоПериодам.Сотрудник) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ ВТРаботникиОрганизацийПоПериодам КАК ВТРаботникиОрганизацийПоПериодам ПО ВложенныйЗапрос.Сотрудник = ВТРаботникиОрганизацийПоПериодам.Сотрудник И ВложенныйЗапрос.ПериодЗаписиРегистра = ВТРаботникиОрганизацийПоПериодам.Период |
|||
27
vmv
17.08.12
✎
18:20
|
(0) не читая дают ответ - ПАКЕТНЫЙ ЗАПРОС.
уже пора вешать содтателей типповых за увлечение конструкторами запросов и ваянием глубоко вложенных запросов |
|||
28
Fragster
гуру
17.08.12
✎
18:23
|
как то так:
|
|||
29
ЧашкаЧая
17.08.12
✎
18:24
|
(27) Вы просто не знаете что есть консоль от TormozIT c разверткой по подзапросам.
|
|||
30
Пеппи
17.08.12
✎
18:25
|
(26) хороший запрос- спасибо большое. )
|
|||
31
Reset
17.08.12
✎
18:26
|
(30) (28) оптимальнее, отрезается лишняя часть физической до начала
|
|||
32
ЧашкаЧая
17.08.12
✎
18:27
|
(27) Вдруг кто еще не знает.
http://screencast.com/t/Gtn0UPdpuys4 |
|||
33
Fragster
гуру
17.08.12
✎
18:30
|
(32) Вложенные запросы и соединения виртуальных таблиц убивают производительность
|
|||
34
Пеппи
17.08.12
✎
18:30
|
(31) ок
(32) это консоль от TormozIT ? |
|||
35
Пеппи
17.08.12
✎
18:30
|
(33) т.е. нужно использовать или или?
|
|||
36
Fragster
гуру
17.08.12
✎
18:31
|
(35) не, использовать временные таблицы, а их уже вкладывать и соединять
|
|||
37
Fragster
гуру
17.08.12
✎
18:32
|
в принципе в (28) последние два запроса можно объединить без ущерба, просто так читается лучше. А вот все объединить не советую.
|
|||
38
vmv
17.08.12
✎
18:34
|
(29) я просто знаю, что пакетный запрос
1. легче читать 2. проще модифицировать 3. можно добиться большей производительности по сравнению с вложенным тармазитами) |
|||
39
Пеппи
17.08.12
✎
18:35
|
Fragster спасибо и тебе большое.
|
|||
40
ЧашкаЧая
17.08.12
✎
18:38
|
(32) Я это знаю. В (26) только один вложенный запрос.
|
|||
41
ЧашкаЧая
17.08.12
✎
18:38
|
(40) -> (33)
|
|||
42
Fragster
гуру
17.08.12
✎
18:39
|
(40) ну да. просто формирование последовательности упоротое...
|
|||
43
vmv
17.08.12
✎
18:41
|
(40) некоторые методы генерации временных и числовых рядов предложил ваш покорный слуга, вто число и тот, что представлен вами.
скуката, думал потроллить чуток, но тут одни яйцеголовые - даже нет сисек!) |
|||
44
Fragster
гуру
17.08.12
✎
18:42
|
(43) http://oboobs.ru
|
|||
45
vmv
17.08.12
✎
18:44
|
(44) без коня не впечатляет - попса)
|
|||
46
ЧашкаЧая
17.08.12
✎
19:02
|
(42) Действительно, не обратил внимание. В той же консоли есть заготовки, первую попавшуюся взял...
|
|||
47
rphosts
17.08.12
✎
19:10
|
так решили уже или как?
|
|||
48
rphosts
17.08.12
✎
19:19
|
если нужно не для расчёта а для отчёта - в СКД это решается дополнением безо всяких выкрутасах с вложенвми
|
|||
49
Пеппи
17.08.12
✎
19:27
|
(48) а можно подробнее про дополнение? И что имеешь в виду под расчетом?
|
|||
50
rphosts
17.08.12
✎
19:28
|
(49)тебе нужно что-то посчитать или запрос что-бы скормитть его СКД?
|
|||
51
rphosts
17.08.12
✎
19:30
|
стоп, у тебя сведений а не накопления - тут не прокатит
|
|||
52
Пеппи
17.08.12
✎
19:32
|
(50) угу, чтобы скормить СКД. Использую Регистры сведений да регистры расчета.
|
|||
53
rphosts
17.08.12
✎
19:38
|
тогда ну пусть (26)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |