0

我有一个父表,其中有两个对子表的外键引用。我正在尝试提出最佳 TSQL(SQL Server 2008),它将子列“旋转”成一行。表结构和所需的结果集结构如下。完成这项工作的最佳方法是什么?

谢谢。

set nocount on
declare @parent table ( parentid int , parentword varchar(3) , childid int , childotherid int )
insert into @parent values ( 0 , 'a' , 1 , 3 )
insert into @parent values ( 1 , 'b' , 2 , 4 )

declare @child table ( childid int , childword varchar(3) )
insert into @child values ( 1 , 'ppp' )
insert into @child values ( 2 , 'qqq' )
insert into @child values ( 3 , 'rrr' )
insert into @child values ( 4 , 'sss' )


needed result set
a       ppp     rrr
b       qqq     sss
4

2 回答 2

2

它不是旋转的。将子表与父表联接两次。请参阅我使用了左联接。如果父表中的子 ID 列都不为空。那么您也可以使用内部联接。

select p.parentword,c1.childword,c2.childword from @parent p
left join @child c1
on p.childid = c1.childid
left join @child c2
on p.childotherid = c2.childid
于 2012-07-20T19:48:43.213 回答
1

尝试使用
select p.parentword,c.childword,c1.childword 作为 childotherword from @parent p
inner join @child c on p.childid = c.childid
inner join @child c1 on p.childotherid = c1.childid

于 2012-07-21T00:12:16.813 回答