|
Как сделать запросом | ☑ | ||
---|---|---|---|---|
0
Borteg
16.09.13
✎
16:47
|
Добрый день. Есть таблица значений с колонками ИНН, НомерДоговора, КодАгента
Есть запрос, который по этим данным находит контрагента и договор в базе. "ВЫБРАТЬ | ВЫБОР | КОГДА ЕСТЬNULL(ВложенныйЗапрос._1, 0) <> 0 | ТОГДА ВложенныйЗапрос._1 | ИНАЧЕ ВЫБОР | КОГДА ЕСТЬNULL(ВложенныйЗапрос._2, 0) <> 0 | ТОГДА ВложенныйЗапрос._2 | ИНАЧЕ ВЫБОР | КОГДА ЕСТЬNULL(ВложенныйЗапрос._3, 0) <> 0 | ТОГДА ВложенныйЗапрос._3 | КОНЕЦ | КОНЕЦ | КОНЕЦ КАК Договор, | ВложенныйЗапрос.Приоритет |ПОМЕСТИТЬ ОбединенныеДоговора |ИЗ | (ВЫБРАТЬ | МАКСИМУМ(ДоговорыКонтрагентов.Ссылка) КАК _1, | NULL КАК _2, | NULL КАК _3, | 1 КАК Приоритет | ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ГДЕ | ДоговорыКонтрагентов.Владелец.ИНН = &ИНН | И ДоговорыКонтрагентов.Владелец.КодАгента = &КодАгента | И ДоговорыКонтрагентов.Номер = &Номер | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | NULL, | МАКСИМУМ(ДоговорыКонтрагентов.Ссылка), | NULL, | 2 | ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ГДЕ | ДоговорыКонтрагентов.Владелец.ИНН = &ИНН | И ДоговорыКонтрагентов.Номер = &Номер | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | NULL, | NULL, | МАКСИМУМ(ДоговорыКонтрагентов.Ссылка), | 3 | ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ГДЕ | ДоговорыКонтрагентов.Владелец.ИНН = &ИНН | И ДоговорыКонтрагентов.Владелец.Наименование ПОДОБНО ""%"" + ""(авиа)"" + ""%"") КАК ВложенныйЗапрос |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1 | ОбединенныеДоговора.Договор КАК ДоговорИскомый, | ОбединенныеДоговора.Приоритет КАК ПриоритетИскомогоДоговора |ИЗ | ОбединенныеДоговора КАК ОбединенныеДоговора | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОбединенныеДоговора КАК ОбединенныеДоговораДляСоединенияСсобой | ПО ОбединенныеДоговора.Договор = ОбединенныеДоговораДляСоединенияСсобой.Договор"; Сейчас я обхожу таблицу значений. И для каждого значения делаю запрос. А как можно одним запросом сделать? Я поместил Таблицу значений в ВТ. Никак не могу понять теперь как в этом же запросе сделать запрос по данным ВТ и сразу же получить искомую таблицу(Кодагент,ИНН,НомерДоговора,найденныйКонтрагент,найденный договор. |
|||
1
Чайник Рассела
16.09.13
✎
16:49
|
ТЗ в запрос и левое соединение. Правда не совсем кошерно.
|
|||
2
Borteg
16.09.13
✎
16:51
|
(1) Тз в запросе, но у меня сейчас там устанавливаются параметры | ДоговорыКонтрагентов.Владелец.ИНН = &ИНН
| И ДоговорыКонтрагентов.Владелец.КодАгента = &КодАгента | И ДоговорыКонтрагентов.Номер = &Номер Как эти параметры прям из Вт и тянуть? |
|||
3
scanduta
16.09.13
✎
16:54
|
ответ в (1)
|
|||
4
unregistered
16.09.13
✎
17:15
|
Что-то вроде (упрощенный вариант):
Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТЗ", ТЗ); Запрос.Текст = "ВЫБРАТЬ | ТЗ.ИНН, | ТЗ.КодАгента, | ТЗ.НомерДоговора | ПОМЕСТИТЬ ВремТЗ | ИЗ | &ТЗ КАК ТЗ |; |////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДоговорыКонтрагентов.Владелец КАК Контрагент, | МАКСИМУМ(ДоговорыКонтрагентов.Ссылка) КАК Договор |ИЗ | ВремТЗ КАК ВремТЗ |ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ПО ВремТЗ.ИНН = ДоговорыКонтрагентов.Владелец.ИНН | И ВремТЗ.КодАгента = ДоговорыКонтрагентов.Владелец.КодАгента | И ВремТЗ.НомерДоговора = ДоговорыКонтрагентов.Номер |СГРУППИРОВАТЬ ПО | ДоговорыКонтрагентов.Владелец"; |
|||
5
Heckfy
16.09.13
✎
17:18
|
ТЗ в Массив. ЗАпрос с условием вСписке (то бишь в массиве) :)
|
|||
6
c00Lo
16.09.13
✎
17:20
|
зашибись договор контрагента максимум выбирать...
|
|||
7
unregistered
16.09.13
✎
17:32
|
(6) >> договор контрагента максимум выбирать...
Такое решение принято в (0). Коряво конечно, но иногда имеет право на жизнь... |
|||
8
aexeel
16.09.13
✎
17:44
|
В исходном примере МАКСИМУМ не обоснован. Вместо него лучше использовать ПЕРВЫЕ 1.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |