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

Связь таблиц в запросе

Связь таблиц в запросе
Я
   logman
 
13.08.21 - 12:13
Возникла надобность НЕ связывать таблицы по определенному условию, вот такое не помогло:

ВЫБОР
    КОГДА РабочееВремяПользователей.ВидРабот.Наименование = "Прочее"
    ТОГДА ЛОЖЬ
КОНЕЦ

В результате запроса все равно выводятся пользователи с видом работ Прочее

Как все таки отменять связь по условию?
   mikecool
 
1 - 13.08.21 - 12:15
в сабже ничего не понятно, это условие ГДЕ?
   mikecool
 
2 - 13.08.21 - 12:15
+1 млм это ты в выборе написал?
   Dmitrii
 
3 - 13.08.21 - 12:17
(0) "не связывать" и "не выводить" - это два разных требования.
Ты чего хочешь?

Начать можно с того, что выложить сюда весь текст запроса целиком. Или хотя бы (если у тебя пакет запросов) ту секцию ВЫБРАТЬ, о которой идёт речь.
   logman
 
4 - 13.08.21 - 12:18
Это я написал в условии связи двух таблиц к примеру, реальная задача у меня другая
КОГДА ВТ_ДатыСотрудников.НачалоИспытательногоСрока <= &НачалоПериода
    И ВТ_ДатыСотрудников.ОкончаниеИспытательногоСрока < &НачалоПериода
ТОГДА ЛОЖЬ

То есть когда интервал испытательного срока пользователя не входит в параметры по периоду, то нужно отменять связь
   logman
 
5 - 13.08.21 - 12:20
Вот кусок запроса в котором все это выполняется

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

СГРУППИРОВАТЬ ПО
    РабочееВремяПользователей.Пользователь,
    РабочееВремяПользователей.ВидРабот.Наименование

ИМЕЮЩИЕ
    ВЫБОР
        КОГДА РабочееВремяПользователей.ВидРабот.Наименование = "Прочее"
            ТОГДА СУММА(РабочееВремяПользователей.ДлительностьВсего / 3600)
    КОНЕЦ <> 0
;

////////////////////////////////////////////////////////////////////////////////
   Мультук
 
6 - 13.08.21 - 12:23
(5)

1) Где "ИНАЧЕ" в выбор ?
2) Нужно не только "Прочее", но в "ИМЕЮЩИЕ" выбираем только прочее

3)

   СУММА(ВЫБОР
        КОГДА РабочееВремяПользователей.ВидРабот.Наименование = "Прочее"
            ТОГДА РабочееВремяПользователей.ДлительностьВсего / 3600
            ИНАЧЕ 0  
    КОНЕЦ) КАК НаИспытательномСроке
   logman
 
7 - 13.08.21 - 12:28
1) Иначе я сам убрал пока что, чтобы работоспособность без нее проверить, там было с &НачалоПериода по &КонецПериода, если это важно

Остальные пункты не особо понял
Точнее понял, но тема вопроса другая, оптимизацией запроса буду заниматься позднее
Сейчас мне нужно чтобы мои две таблицы не связывались, если испытательный срок не входит в параметры по периоду
   logman
 
8 - 13.08.21 - 13:47
С проблемой разобрался, переместив условие связи в ГДЕ, но вопрос, наверное, так и останется открытым, не все же время ГДЕ использовать
Всем спасибо за попытку помочь
   серый КТУЛХУ
 
9 - 13.08.21 - 13:57
условие у тебя кривое и искусственно усложненное. упрости штоль.
            ПО (РабочееВремяПользователей.Пользователь = ВТ_ДатыСотрудников.Пользователь
                И РабочееВремяПользователей.Период <= ВТ_ДатыСотрудников.ОкончаниеИспытательногоСрока
                И РабочееВремяПользователей.Период <= &КонецПериода
                И РабочееВремяПользователей.Период >= ВТ_ДатыСотрудников.НачалоИспытательногоСрока
                И РабочееВремяПользователей.Период >= &НачалоПериода)
   logman
 
10 - 13.08.21 - 14:44
(9) Спасибо большое :)

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.