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

Откуда: Москва
Сообщений: 191
mssql2005
Всем привет, подскажите... если не сложно - под новый год уже... не идет...

есть три самостоятельные таблицы -
1 семинары
2 зарегистрированные на них люди
3 выставленные счета на семинаре

declare @t0 table (idSem varchar(200))
declare @t1 table (idSem varchar(200), idCompany varchar(200), idFIO varchar(200), statusFIO varchar(200))
declare @t2 table (idSem varchar(200), idCompany varchar(200), idFIO varchar(200), Account varchar(200))

insert into @t0
select 'Семинар1'

insert into @t1
select 'Семинар1', 'Компания1', 'контакт11','присутствовал' union all
select 'Семинар1', 'Компания1', 'контакт12','отсутствовал' union all
select 'Семинар1', 'Компания1', 'контакт13','присутствовал' union all
select 'Семинар1', 'Компания2', 'контакт21','присутствовал' union all
select 'Семинар1', 'Компания2', 'контакт22','отказался'

insert into @t2
select 'Семинар1', 'Компания1', 'контакт11','№111' union all
select 'Семинар1', 'Компания1', 'контакт14','№141' union all
select 'Семинар1', 'Компания2', 'контакт22','№221'

select * From
(select * from @t0) as tb0
left join
(select * from @t1) as tb1
on tb0.idSem=tb1.idSem 
left join
(select * from @t2) as tb2
on tb0.idSem=tb2.idSem

хочу получить одну сводную таблицу типа такой
idSemidCompanyidFIOstatusFIOAccount
Семинар1Компания1контакт11присутствовал№111
Семинар1Компания1контакт12отсутствовалnull
Семинар1Компания1контакт13присутствовалnull
Семинар1Компания1контакт14null№141
Семинар1Компания2контакт21присутствовалnull
Семинар1Компания2контакт22отказался№221

join left right не подходят все затраивается..., думал через union all (подогнав по размеру) но тоже никак

как то все это просто делается - но не могу сложить в уме никак...
7 дек 15, 20:02    [18526321]     Ответить | Цитировать Сообщить модератору
 Re: просьба помочь с объединением таблиц  [new]
Добрый Э - Эх
Guest
ef1,

в запросе твоем, в связке зарегеных лиц и выставленных счетов, не хватает условия соединения по idCompany и idFIO
7 дек 15, 20:12    [18526349]     Ответить | Цитировать Сообщить модератору
 Re: просьба помочь с объединением таблиц  [new]
ef1
Member

Откуда: Москва
Сообщений: 191
да есть такое поле - я просто в пример не добавил, щас перерисую
7 дек 15, 20:18    [18526373]     Ответить | Цитировать Сообщить модератору
 Re: просьба помочь с объединением таблиц  [new]
ef1
Member

Откуда: Москва
Сообщений: 191
вот
declare @t0 table (idSem varchar(200))
declare @t1 table (idSem varchar(200), idCompany varchar(200), idFIO varchar(200), FIO_idCompany varchar(200), statusFIO varchar(200))
declare @t2 table (idSem varchar(200), idCompany varchar(200), idFIO varchar(200), FIO_idCompany varchar(200), Account varchar(200))

insert into @t0
select 'Семинар1'

insert into @t1
select 'Семинар1', 'Компания1', 'контакт11', 'Компания1','присутствовал' union all
select 'Семинар1', 'Компания1', 'контакт12', 'Компания1','отсутствовал' union all
select 'Семинар1', 'Компания1', 'контакт13', 'Компания1','присутствовал' union all
select 'Семинар1', 'Компания2', 'контакт21', 'Компания2','присутствовал' union all
select 'Семинар1', 'Компания2', 'контакт22', 'Компания2','отказался'

insert into @t2
select 'Семинар1', 'Компания1', 'контакт11', 'Компания1','№111' union all
select 'Семинар1', 'Компания1', 'контакт14', 'Компания1','№141' union all
select 'Семинар1', 'Компания2', 'контакт22', 'Компания2','№221'

select tb0.idSem,
	   tb1.idCompany as tb1_idCompany, 
	   tb1.idFIO as tb1_idFIO, 
	   tb1.FIO_idCompany as tb1_FIO_idCompany, 
       tb1.statusFIO as tb1_statusFIO, 
	   tb2.idFIO as tb2_FIO, 
       tb2.FIO_idCompany as tb2_FIO_idCompany , 
       tb2.Account as tb2_FIO_idCompany
From
(select * from @t0) as tb0
left join
(select * from @t1) as tb1
on tb0.idSem=tb1.idSem 
left join
(select * from @t2) as tb2
on tb0.idSem=tb2.idSem


но все рано не въезжаю пока как свести все в одно...
7 дек 15, 20:31    [18526419]     Ответить | Цитировать Сообщить модератору
 Re: просьба помочь с объединением таблиц  [new]
ef1
Member

Откуда: Москва
Сообщений: 191
сам запрос не менял...
просто не понимаю пока, по идее нужно сначала @tb1 и @tb2 связать и их вместе потом привязать наверх...но как...
7 дек 15, 20:41    [18526472]     Ответить | Цитировать Сообщить модератору
 Re: просьба помочь с объединением таблиц  [new]
Rankatan
Member

Откуда:
Сообщений: 250
select tb0.idSem,
	   COALESCE(tb1.idCompany,tb1.FIO_idCompany,tb2.FIO_idCompany) as idCompany, 
	   COALESCE(tb1.idFIO,tb2.idFIO) as idFIO, 
       tb1.statusFIO as statusFIO, 
       tb2.Account as Account
From @t0 tb0
LEFT JOIN 
(
	@t1 tb1
	FULL JOIN @t2 AS tb2
		ON tb1.idSem=tb2.idSem
		AND tb1.idCompany=tb2.idCompany
		AND tb1.idFIO=tb2.idFIO
)	
ON tb0.idSem IN (tb1.idSem,tb2.idSem )
7 дек 15, 20:44    [18526478]     Ответить | Цитировать Сообщить модератору
 Re: просьба помочь с объединением таблиц  [new]
ef1
Member

Откуда: Москва
Сообщений: 191
Rankatan СПАСИБО ОГРОМНОЕ
7 дек 15, 20:47    [18526492]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить