|
в языке запросов нет аналога EXISTS в SQL?! | ☑ | ||
|---|---|---|---|---|
|
0
spenov
22.01.09
✎
18:17
|
каким образом выкручиваться без такой конструкции?
например запрос ВЫБРАТЬ * ИЗ Справочник.Договоры как Договоры ГДЕ СУЩЕСТВУЕТ(ВЫБРАТЬ * ИЗ...ГДЕ Контрагент=Договоры.Владелец И Договор=Договоры.Ссылка) |
|||
|
1
wPa
22.01.09
✎
18:18
|
НЕ ЕСТЬNULL ?
|
|||
|
2
toypaul
гуру
22.01.09
✎
18:18
|
через соединение
|
|||
|
3
rs_trade
22.01.09
✎
18:18
|
ГДЕ (ВЫБРАТЬ COUNT(*) ИЗ...ГДЕ Контрагент=Договоры.Владелец И Договор=Договоры.Ссылка)<>0
Может так? |
|||
|
4
spenov
22.01.09
✎
18:19
|
это все не годится.
через соединение строки размножатся... проверка на нул вообще не пойму куда здесь прикрутить :) |
|||
|
5
rs_trade
22.01.09
✎
18:19
|
(3) за синтаксис не ручаюсь...)))
|
|||
|
6
wPa
22.01.09
✎
18:21
|
(4) соединением с таким же запросом
|
|||
|
7
spenov
22.01.09
✎
18:23
|
(3) - не компиляет...ругается...сильно :)
(6) не понял.можно подробнее идею? |
|||
|
8
IronDemon
22.01.09
✎
18:24
|
ГДЕ Ссылка НЕ(ВЫБРАТЬ Ссылка ИЗ...ГДЕ Контрагент=Договоры.Владелец И Договор=Договоры.Ссылка)
|
|||
|
9
IronDemon
22.01.09
✎
18:26
|
Или без НЕ
|
|||
|
10
spenov
22.01.09
✎
18:29
|
(8) в конкретно этом случае так можно выкрутиться. попробовал - получилось.
но в общем случае не получиться, если например будет объединение таблиц по которым необходимо проверить вложенное условие :( запрос в итоге у меня получился такой: ТекстЗапроса="ВЫБРАТЬ ПЕРВЫЕ 1 | ДоговорыКонтрагентов.Ссылка как Договор, | ДоговорыКонтрагентов.Владелец как Контрагент |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Владелец В ИЕРАРХИИ(&Контрагент) | И ДоговорыКонтрагентов.Организация=&Организация | "+?(ВидВзаиморасчетовПоДоговору=Справочники.ВидыВзаиморасчетов.ПустаяСсылка(),"","И ДоговорыКонтрагентов.ВидВзаиморасчетов = &ВидВзаиморасчетов")+" | И ДоговорыКонтрагентов.Ссылка В (ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Субконто2 | ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаС, &ДатаПо, , , , , ) КАК ХозрасчетныйОстаткиИОбороты | ГДЕ | ХозрасчетныйОстаткиИОбороты.Организация = &Организация | И ХозрасчетныйОстаткиИОбороты.Субконто1 = ДоговорыКонтрагентов.Владелец | И ХозрасчетныйОстаткиИОбороты.Субконто2 = ДоговорыКонтрагентов.Ссылка)"; надо достать все договоры, по которым есть сальдо или оборот за заданный период |
|||
|
11
toypaul
гуру
22.01.09
✎
18:32
|
(10) почему это по объединению не проверить? объединение в подзапросе? легко!
|
|||
|
12
toypaul
гуру
22.01.09
✎
18:33
|
а вообще изврат какой-то - зачем тут справочник договов? почему не сделать основную выборку по таблице остатков и оборотов?
|
|||
|
13
spenov
22.01.09
✎
18:37
|
(10) например такой вариант очень условный но всеже...
ВЫБРАТЬ ИЗ Справочник.Контрагенты ОБЪЕДИНИТЬ Справочник.Договоры ПО Контрагенты.Ссылка=Договоры.Владелец ГДЕ СУЩЕСТВУЕТ(ВЫБРАТЬ * ИЗ .. ГДЕ Контаргент=Контрагенты.Ссылка И Договор=Договоры.Ссылка) как такой вариант реализовать? изврата нет. в остатках и оборотах не обязательно субконтами будут договоры, а вбырать надо именно договоры. поэтому мой вариант думаю быстрее отработает с учотом проверки доп условий в договорах |
|||
|
14
spenov
22.01.09
✎
18:38
|
и кстати условий может быть больше :)
|
|||
|
15
KAO111
22.01.09
✎
18:52
|
В этой ситуации можно не надо, но для примера... у 1С есть групповое сравнение
ВЫБРАТЬ Т1.Контрагент, Т2.Договор ИЗ Справочник.Контрагенты как Т1 ОБЪЕДИНИТЬ Справочник.Договоры как Т2 ПО Контрагенты.Ссылка=Договоры.Владелец ГДЕ (Т1.Контрагент, Т2.Договор) в (ВЫБРАТЬ * ИЗ .. ГДЕ Контаргент=Т1.Контрагент И Договор=Т2.Договор) |
|||
|
16
spenov
22.01.09
✎
19:07
|
(15) МОЩНО! несколько неожиданно, но работает. с этим уже можно жить :) спасибо
|
|||
|
17
megalodon
22.01.09
✎
21:40
|
ВЫБРАТЬ *
ИЗ Справочник.Договоры как Договоры ГДЕ 1 В(ВЫБРАТЬ 1 ИЗ...ГДЕ Контрагент=Договоры.Владелец И Договор=Договоры.Ссылка) |
|||
|
18
Ненавижу 1С
гуру
22.01.09
✎
21:48
|
(0) гению скажи в список недостатков включить
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |