|
Вложенный запрос | ☑ | ||
---|---|---|---|---|
0
PiotrLoginov
11.11.12
✎
18:24
|
Не уверен, что правильно использую терминологию... В УТ 11 есть справочник Партнеры (с иерархией элементов), элементы которого могут быть распределены по сегментам, согласно записям регистра сведений ПартнерыСегмента, каждый элемент которого указывает, какой партнер к какому сегменту относится.
Мне надо написать запрос, отбирающий тех партнеров, чьи родители относятся к определенному сегменту. Начал так: ВЫБРАТЬ Партнеры.Ссылка ИЗ Справочник.Партнеры КАК Партнеры ГДЕ Партнеры.Родитель = &Родитель Потом отдельно написал выбор такого родителя, для которого есть запись в регистре сведений: ВЫБРАТЬ Партнеры.Ссылка ИЗ Справочник.Партнеры КАК Партнеры ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПартнерыСегмента КАК ПартнерыСегмента ПО ПартнерыСегмента.Партнер = Партнеры.Ссылка ГДЕ ПартнерыСегмента.Сегмент.Ссылка = &Ссылка Вопрос: как теперь указать, что Родитель в первом запросе - это Партнеры.Ссылка во втором? Мне надо объединить эти два запроса в один, после чего указав значение параметра &Ссылка я смогу получать список партнеров, принадлежащих определенному сегменту. |
|||
1
PiotrLoginov
11.11.12
✎
19:02
|
Дайте хоть что-нибудь... пример аналогичного запроса, ссылку на информацию по теме...
|
|||
2
PiotrLoginov
11.11.12
✎
19:19
|
Получилось:
ВЫБРАТЬ Партнеры.Ссылка ИЗ Справочник.Партнеры КАК Партнеры ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Партнеры.Ссылка КАК Ссылка ИЗ Справочник.Партнеры КАК Партнеры ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПартнерыСегмента КАК ПартнерыСегмента ПО ПартнерыСегмента.Партнер = Партнеры.Ссылка ГДЕ ПартнерыСегмента.Сегмент.Ссылка = &Ссылка) КАК ВложенныйЗапрос ПО Партнеры.Родитель = ВложенныйЗапрос.Ссылка Жаль, что на мисте так плохо с помощью новичкам... |
|||
3
Chai Nic
11.11.12
✎
19:20
|
(2) Так ведь получилось же! Задача выполнена)
|
|||
4
fimanich
11.11.12
✎
19:31
|
(2) кстати лучше вместо вложенного запроса использовать временную таблицу. Кроме того, во вложенном запросе мне кажется смело можно даже поставить Внутреннее соединение. Кстати, судя по логике описанной в (0), в основном запросе тоже внутреннее соединение.
|
|||
5
PiotrLoginov
11.11.12
✎
21:49
|
(4) Знать бы еще, что за "Внутреннее соединение" :)
Так никто и не посоветовал, что можно почитать. Получившийся запрос нуждался в корректировке. В итоге стало вот так: ВЫБРАТЬ Партнеры.Ссылка КАК Объект, Партнеры.Родитель ИЗ (ВЫБРАТЬ Партнеры.Ссылка КАК Ссылка, ПартнерыСегмента.Сегмент.Ссылка КАК СегментСсылка ИЗ Справочник.Партнеры КАК Партнеры ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПартнерыСегмента КАК ПартнерыСегмента ПО ПартнерыСегмента.Партнер = Партнеры.Ссылка ГДЕ ПартнерыСегмента.Сегмент.Ссылка = &Ссылка) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры ПО ВложенныйЗапрос.Ссылка = Партнеры.Родитель |
|||
6
fimanich
12.11.12
✎
08:30
|
(4) ну здесь мат. часть подучить надо. Внутреннее - когда попадают только записи из обеих таблиц, для которых исполняется условие соединения; левое - когда из левой таблицы попадают все записи, а из правой - только удовлетворяющие условию соединения.
|
|||
7
fimanich
12.11.12
✎
08:57
|
(4) кстати, почитать можно даже во встроенной справке: Справка\Встроенный язык\Работа с запросами\Синтаксис текста запросов
|
|||
8
PiotrLoginov
12.11.12
✎
09:38
|
(6) Ух ты, классно было бы. А то у меня бывают ситуации, когда все записи из левой таблицы не нужны. Действительно, нужны только те, которые удовлетворяют условиям соединения. Сейчас погуглю по видам соединения...
|
|||
9
Godofsin
12.11.12
✎
09:43
|
(8) Справка есть как бэ... и ЖКК
|
|||
10
PiotrLoginov
12.11.12
✎
09:46
|
да. получается. В конструкторе на закладке Связи снимаем галочки "Все" у обеих таблиц - и в запросе соединение становится внутренним.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |