我有两张桌子:
我们可以假设类型1的每个项目(黄色)必须具有至少一个连接,类型为2(绿色),而Type-1项目为 A面,Type-2项位于 B面。 A面也可以是2型,B面也可以是1型,但我们可以忽略它们。我在类型1 的项目中有一些有趣的仅 类型2的B面。在我的例子中 - 它是我用红色箭头标记的行。
现在,我需要UPDATE
(使用T-SQL脚本)每个类型为1的项目的名称,以及类型为2的第一个项目的名称与B方有关。
在我的示例中 - 项目1将获得项目3的名称(尽管它也与项目6有关联),项目2将获得项目3的名称。
我对这个剧本感到麻烦,我很乐意得到帮助...
答案 0 :(得分:1)
如果我们建立起来:
第一步:选择一些数据
select IA.* from Items IA
第二步:加入连接
select IA.* from Items IA
inner join Connections C
on IA.Key = C.Side_A_Key
第三步:加入双方的连接
select IA.* from Items IA
inner join Connections C
on IA.Key = C.Side_A_Key
inner join Items IB
on IB.Key = C.Side_B_Key
第四步:选择我们想要的东西:
select IA.Key, IB.Name
from Items IA
inner join Connections C
on IA.Key = C.Side_A_Key
inner join Items IB
on IB.Key = C.Side_B_Key
第五步:进行更新:
update IA
set Name = IB.Name
from Items IA
inner join Connections C
on IA.Key = C.Side_A_Key
inner join Items IB
on IB.Key = C.Side_B_Key