Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 декодировать одной таблицей 10 других в соединении  [new]
super10
Guest
нет ли какого способа не делать еще 10 соединений для декодирования?

в соединении участвуют 10 таблиц, в каждой из которых есть person_id.
собирается добро из всех 10 таблиц, но надо в каждой из них вместо person_id вывести фио.
получается, что еще 10 раз надо присоединить таблицу PERSON (person_id, фио), а она и есть самая здоровая.
как-то бы хотелось декодировать всего 1 раз,
можно ли это как-то осуществить?
вот пример, где 3 таблицы. но вообще их 10.

declare @t1 table (person_id int, col1 varchar(1))
insert into @t1 values(11, 'a'), (12, 'b')

declare @t2 table (person_id int, col2 varchar(1))
insert into @t2 values(21, 'b'), (22, 'c')

declare @t3 table (person_id int, col3 varchar(1))
insert into @t3 values(31, 'd'), (32, 'b')

declare @person table(person_id int, fio varchar(100))
insert into @person values(11, 'Ivanov'), (12, 'Petrov'),(21, 'Sidorov'), (32, 'Kakashkin')


select p1.fio, t1.col1, p2.fio, t2.col2, p3.fio, t3.col3
from @t1 t1 left join @t2 t2 on t1.col1 = t2.col2
            left join @t3 t3 on t1.col1 = t3.col3
            left join @person p1 on t1.person_id = p1.person_id            
            left join @person p2 on t2.person_id = p2.person_id            
            left join @person p3 on t3.person_id = p3.person_id
20 июл 12, 16:21    [12894252]     Ответить | Цитировать Сообщить модератору
 Re: декодировать одной таблицей 10 других в соединении  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3104
как вариант
выбирите сначала все из 10 таблиц, а потом к общему результату джойните PERSON
20 июл 12, 16:23    [12894266]     Ответить | Цитировать Сообщить модератору
 Re: декодировать одной таблицей 10 других в соединении  [new]
super10
Guest
HandKot,

так у меня же 10 разных колонок, к которым джойнить.
или имелось в виду собрать все из 10 колонок в 1 колонку(типа unpivot), к ней присоединить PERSON, а потом снова pivot?
20 июл 12, 16:35    [12894341]     Ответить | Цитировать Сообщить модератору
 Re: декодировать одной таблицей 10 других в соединении  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3104
как-то так
и потом проверить, будет ли это быстрее, чем 10 обычных лефт джойнов
23 июл 12, 08:51    [12900394]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить