|
Связь таблиц в запросе | ☑ | ||
---|---|---|---|---|
0
logman
13.08.21
✎
12:13
|
Возникла надобность НЕ связывать таблицы по определенному условию, вот такое не помогло:
ВЫБОР КОГДА РабочееВремяПользователей.ВидРабот.Наименование = "Прочее" ТОГДА ЛОЖЬ КОНЕЦ В результате запроса все равно выводятся пользователи с видом работ Прочее Как все таки отменять связь по условию? |
|||
1
mikecool
13.08.21
✎
12:15
|
в сабже ничего не понятно, это условие ГДЕ?
|
|||
2
mikecool
13.08.21
✎
12:15
|
+1 млм это ты в выборе написал?
|
|||
3
Dmitrii
гуру
13.08.21
✎
12:17
|
(0) "не связывать" и "не выводить" - это два разных требования.
Ты чего хочешь? Начать можно с того, что выложить сюда весь текст запроса целиком. Или хотя бы (если у тебя пакет запросов) ту секцию ВЫБРАТЬ, о которой идёт речь. |
|||
4
logman
13.08.21
✎
12:18
|
Это я написал в условии связи двух таблиц к примеру, реальная задача у меня другая
КОГДА ВТ_ДатыСотрудников.НачалоИспытательногоСрока <= &НачалоПериода И ВТ_ДатыСотрудников.ОкончаниеИспытательногоСрока < &НачалоПериода ТОГДА ЛОЖЬ То есть когда интервал испытательного срока пользователя не входит в параметры по периоду, то нужно отменять связь |
|||
5
logman
13.08.21
✎
12:20
|
Вот кусок запроса в котором все это выполняется
ВЫБРАТЬ ВЫБОР КОГДА РабочееВремяПользователей.ВидРабот.Наименование = "Прочее" ТОГДА СУММА(РабочееВремяПользователей.ДлительностьВсего / 3600) КОНЕЦ КАК НаИспытательномСроке, РабочееВремяПользователей.Пользователь КАК Пользователь ПОМЕСТИТЬ ВТ_ПрочееНаИС ИЗ РегистрНакопления.РабочееВремяПользователей КАК РабочееВремяПользователей ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДатыСотрудников КАК ВТ_ДатыСотрудников ПО (РабочееВремяПользователей.Пользователь = ВТ_ДатыСотрудников.Пользователь И ВЫБОР КОГДА ВТ_ДатыСотрудников.НачалоИспытательногоСрока >= &НачалоПериода И ВТ_ДатыСотрудников.ОкончаниеИспытательногоСрока <= &КонецПериода ТОГДА РабочееВремяПользователей.Период МЕЖДУ ВТ_ДатыСотрудников.НачалоИспытательногоСрока И ВТ_ДатыСотрудников.ОкончаниеИспытательногоСрока КОГДА ВТ_ДатыСотрудников.НачалоИспытательногоСрока >= &НачалоПериода И ВТ_ДатыСотрудников.ОкончаниеИспытательногоСрока >= &КонецПериода ТОГДА РабочееВремяПользователей.Период МЕЖДУ ВТ_ДатыСотрудников.НачалоИспытательногоСрока И &КонецПериода КОГДА ВТ_ДатыСотрудников.НачалоИспытательногоСрока <= &НачалоПериода И (ВТ_ДатыСотрудников.ОкончаниеИспытательногоСрока МЕЖДУ &НачалоПериода И &КонецПериода) ТОГДА РабочееВремяПользователей.Период МЕЖДУ &НачалоПериода И ВТ_ДатыСотрудников.ОкончаниеИспытательногоСрока КОГДА ВТ_ДатыСотрудников.НачалоИспытательногоСрока <= &НачалоПериода И ВТ_ДатыСотрудников.ОкончаниеИспытательногоСрока < &НачалоПериода ТОГДА ЛОЖЬ КОГДА ВТ_ДатыСотрудников.НачалоИспытательногоСрока < &НачалоПериода И ВТ_ДатыСотрудников.ОкончаниеИспытательногоСрока > &КонецПериода ТОГДА РабочееВремяПользователей.Период МЕЖДУ &НачалоПериода И &КонецПериода КОНЕЦ) СГРУППИРОВАТЬ ПО РабочееВремяПользователей.Пользователь, РабочееВремяПользователей.ВидРабот.Наименование ИМЕЮЩИЕ ВЫБОР КОГДА РабочееВремяПользователей.ВидРабот.Наименование = "Прочее" ТОГДА СУММА(РабочееВремяПользователей.ДлительностьВсего / 3600) КОНЕЦ <> 0 ; //////////////////////////////////////////////////////////////////////////////// |
|||
6
Мультук
гуру
13.08.21
✎
12:23
|
(5)
1) Где "ИНАЧЕ" в выбор ? 2) Нужно не только "Прочее", но в "ИМЕЮЩИЕ" выбираем только прочее 3) СУММА(ВЫБОР КОГДА РабочееВремяПользователей.ВидРабот.Наименование = "Прочее" ТОГДА РабочееВремяПользователей.ДлительностьВсего / 3600 ИНАЧЕ 0 КОНЕЦ) КАК НаИспытательномСроке |
|||
7
logman
13.08.21
✎
12:28
|
1) Иначе я сам убрал пока что, чтобы работоспособность без нее проверить, там было с &НачалоПериода по &КонецПериода, если это важно
Остальные пункты не особо понял Точнее понял, но тема вопроса другая, оптимизацией запроса буду заниматься позднее Сейчас мне нужно чтобы мои две таблицы не связывались, если испытательный срок не входит в параметры по периоду |
|||
8
logman
13.08.21
✎
13:47
|
С проблемой разобрался, переместив условие связи в ГДЕ, но вопрос, наверное, так и останется открытым, не все же время ГДЕ использовать
Всем спасибо за попытку помочь |
|||
9
серый КТУЛХУ
13.08.21
✎
13:57
|
условие у тебя кривое и искусственно усложненное. упрости штоль.
ПО (РабочееВремяПользователей.Пользователь = ВТ_ДатыСотрудников.Пользователь И РабочееВремяПользователей.Период <= ВТ_ДатыСотрудников.ОкончаниеИспытательногоСрока И РабочееВремяПользователей.Период <= &КонецПериода И РабочееВремяПользователей.Период >= ВТ_ДатыСотрудников.НачалоИспытательногоСрока И РабочееВремяПользователей.Период >= &НачалоПериода) |
|||
10
logman
13.08.21
✎
14:44
|
(9) Спасибо большое :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |