Вход | Регистрация
 

Рекурсия в запросе

Рекурсия в запросе
Я
   myr4ik07
 
16.09.16 - 09:09
Есть запрос1
ВЫБРАТЬ
    НастройкиКПИ.Группа,
    НастройкиКПИ.Значение
ИЗ
    РегистрСведений.НастройкиКПИ КАК НастройкиКПИ

СГРУППИРОВАТЬ ПО
    НастройкиКПИ.Группа,
    НастройкиКПИ.Значение

и есть запрос2

ВЫБРАТЬ
    ОПзС.НоменклатураИзделие КАК НоменклатураИзделие,
    МАКСИМУМ(ОПзС.ДатаПлан) КАК ДатаПлан,
    МАКСИМУМ(ОПзС.ОтчетПроизводстваЗаСмену.ПереданыКомплектующиеНаСборкуДата) КАК ПереданыКомплектующиеНаСборкуДата
ИЗ
    РегистрСведений.ОПзС КАК ОПзС
ГДЕ
    ОПзС.ДатаПлан МЕЖДУ &Начало И &Конец
    И ОПзС.СерийныйНомерИзделия = ОПзС.СерийныйНомер
    И ОПзС.Операция = &Операция
    И ОПзС.ОтчетПроизводстваЗаСмену.Проведен
    И ОПзС.Номенклатура.Родитель В ИЕРАРХИИ(&Родитель)

СГРУППИРОВАТЬ ПО
    ОПзС.НоменклатураИзделие

как то в одном запросе нужно из запроса2 все ОПзС проверить есть ли в Иерархии каждая ОПзС в запрос1 с условием Запрос1.Группа
   myr4ik07
 
1 - 16.09.16 - 09:10
короче нужно проверить находиться ли каждая ОПзС в одной из список групп из запрос1
   FIXXXL
 
2 - 16.09.16 - 09:10
второй в ВТ и ВТ соединить с первым
есть там поля соединения?
   myr4ik07
 
3 - 16.09.16 - 09:12
(2) есть Запрос2.ОПзС.Родитель = Запрос1.Настройка
это и там и там Родитель в справочнике ОПзС ЭтоГРуппа
   myr4ik07
 
4 - 16.09.16 - 09:12
(2) есть поля соединения, смотри (3)
   FIXXXL
 
5 - 16.09.16 - 09:14
(4) попробуй:

ОПзС.Номенклатура.Родитель В ИЕРАРХИИ(ВЫБРАТЬ *тут первый запрос*)
   myr4ik07
 
6 - 16.09.16 - 09:18
(5) т.е. это будет показано только ту номенклатуру которая присутствует в Запрос1.Настройки, верно?
   Fragster
 
7 - 16.09.16 - 09:21
если по иерархии - то это делается двумя наборами данных в СКД. еще удобно сделать доп. регистр с данными для nested sets и использовать его в запросах для соединения
   myr4ik07
 
8 - 16.09.16 - 09:23
(7) к сожалению не использую скд
   Fragster
 
9 - 16.09.16 - 09:24
(8) тогда либо портянка с .родитель.родитель... либо доп. РС
   myr4ik07
 
10 - 16.09.16 - 09:25
(9) понял, спасибо
   myr4ik07
 
11 - 16.09.16 - 09:51
Ребята, помогите додумать

ВЫБРАТЬ
    ОПзС.НоменклатураИзделие КАК НоменклатураИзделие,
    МАКСИМУМ(ОПзС.ДатаПлан) КАК ДатаПлан,
    МАКСИМУМ(ОПзС.ОтчетПроизводстваЗаСмену.ПереданыКомплектующиеНаСборкуДата) КАК Передано,
    НастройкиКПИ.Группа,
    ВЫБОР
        КОГДА НастройкиКПИ.Значение ЕСТЬ NULL 
            ТОГДА 3
        ИНАЧЕ НастройкиКПИ.Значение
    КОНЕЦ КАК Значение,
    ДОБАВИТЬКДАТЕ(ОПзС.ДатаПлан, ДЕНЬ, -ВЫБОР
            КОГДА НастройкиКПИ.Значение ЕСТЬ NULL 
                ТОГДА 3
            ИНАЧЕ НастройкиКПИ.Значение
        КОНЕЦ) КАК КоличествоДней
ИЗ
    РегистрСведений.ОПзС КАК ОПзС
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиКПИ КАК НастройкиКПИ
        ПО ОПзС.Номенклатура.Родитель = НастройкиКПИ.Группа
ГДЕ
    ОПзС.ДатаПлан МЕЖДУ &Начало И &Конец
    И ОПзС.СерийныйНомерИзделия = ОПзС.СерийныйНомер
    И ОПзС.Операция = &Операция
    И ОПзС.ОтчетПроизводстваЗаСмену.Проведен
    И ОПзС.Номенклатура.Родитель В ИЕРАРХИИ(&Родитель)

СГРУППИРОВАТЬ ПО
    ОПзС.НоменклатураИзделие,
    НастройкиКПИ.Группа,
    ВЫБОР
        КОГДА НастройкиКПИ.Значение ЕСТЬ NULL 
            ТОГДА 3
        ИНАЧЕ НастройкиКПИ.Значение
    КОНЕЦ,
    ДОБАВИТЬКДАТЕ(ОПзС.ДатаПлан, ДЕНЬ, -ВЫБОР
            КОГДА НастройкиКПИ.Значение ЕСТЬ NULL 
                ТОГДА 3
            ИНАЧЕ НастройкиКПИ.Значение
        КОНЕЦ)

сейчас работает только с Родителем, а подродитель не захватывает, т.е. когда я в РС.НастройкиКПИ выставляю значение 
НастройкиКПИ.Группа = Ставлю подродитель
то при соединении получаю налл, а нужно получить подродителя
   myr4ik07
 
12 - 16.09.16 - 10:07
что то типа этого вышло


ВЫБРАТЬ
    ОПзС.НоменклатураИзделие КАК НоменклатураИзделие,
    МАКСИМУМ(ОПзС.ДатаПлан) КАК ДатаПлан,
    МАКСИМУМ(ОПзС.ОтчетПроизводстваЗаСмену.ПереданыКомплектующиеНаСборкуДата) КАК Передано,
    НастройкиКПИ.Группа,
    ВЫБОР
        КОГДА НастройкиКПИ.Значение ЕСТЬ NULL 
            ТОГДА 3
        ИНАЧЕ НастройкиКПИ.Значение
    КОНЕЦ КАК Значение,
    ДОБАВИТЬКДАТЕ(ОПзС.ДатаПлан, ДЕНЬ, -ВЫБОР
            КОГДА НастройкиКПИ.Значение ЕСТЬ NULL 
                ТОГДА 3
            ИНАЧЕ НастройкиКПИ.Значение
        КОНЕЦ) КАК КоличествоДней
ИЗ
    РегистрСведений.ОПзС КАК ОПзС
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиКПИ КАК НастройкиКПИ
        ПО (ОПзС.Номенклатура.Родитель В (НастройкиКПИ.Группа)
                ИЛИ ОПзС.Номенклатура.Родитель.Родитель В (НастройкиКПИ.Группа)
                ИЛИ ОПзС.Номенклатура.Родитель.Родитель.Родитель В (НастройкиКПИ.Группа)
                ИЛИ ОПзС.Номенклатура.Родитель.Родитель.Родитель.Родитель В (НастройкиКПИ.Группа))
ГДЕ
    ОПзС.ДатаПлан МЕЖДУ &Начало И &Конец
    И ОПзС.СерийныйНомерИзделия = ОПзС.СерийныйНомер
    И ОПзС.Операция = &Операция
    И ОПзС.ОтчетПроизводстваЗаСмену.Проведен
    И ОПзС.Номенклатура.Родитель В ИЕРАРХИИ(&Родитель)

СГРУППИРОВАТЬ ПО
    ОПзС.НоменклатураИзделие,
    НастройкиКПИ.Группа,
    ВЫБОР
        КОГДА НастройкиКПИ.Значение ЕСТЬ NULL 
            ТОГДА 3
        ИНАЧЕ НастройкиКПИ.Значение
    КОНЕЦ,
    ДОБАВИТЬКДАТЕ(ОПзС.ДатаПлан, ДЕНЬ, -ВЫБОР
            КОГДА НастройкиКПИ.Значение ЕСТЬ NULL 
                ТОГДА 3
            ИНАЧЕ НастройкиКПИ.Значение
        КОНЕЦ)

УПОРЯДОЧИТЬ ПО
    Значение
   xafavute
 
13 - 16.09.16 - 10:12
(9) можно еще замыкание построить
   xafavute
 
14 - 16.09.16 - 10:16

Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.