2列的SQL Server子查询最佳

时间:2012-07-20 19:40:30

标签: sql-server join foreign-keys

我有一个父表,其中包含对子表的两个外键引用。我试图想出最佳的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

2 个答案:

答案 0 :(得分:2)

它不是pivoting.Join两次带有父表的子表。参见我使用了左连接。如果父表中的所有childid列都不为null。那么你也可以使用内连接。 / p>

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

答案 1 :(得分:1)

尝试使用
     选择p.parentword,c.childword,c1.childword作为childotherword      来自@parent p
     p.childid = c.childid的内连接@child c      p.childotherid = c1.childid

上的内连接@child c1