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


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

Рекурсия в запросе
Я
   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

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