如何根据SQL Server中的给定父ID获取来自不同表的所有子记录

时间:2016-01-01 01:44:52

标签: sql sql-server

我有4个不同的表:

select * from System;
select * from Set;
select * from Item;
select * from Versions; 

现在,对于每个系统ID,将有 n no.of Sets ,并且对于每个系统,将有 n no。项目每个项目将有 n no.of Versions

每个系统都有:

  • n no of set
  • 每套都有
    • n no of Items
    • 每个项目都有
      • n no of Versions

当我有一个特定的SystemId时,我希望从单个存储过程中每个项目的SetItems以及每个项目的Versions中检索所有记录并使用不同的ID再次将这些记录插入相应的表中。

1 个答案:

答案 0 :(得分:0)

经过很少的努力你可以发现,我建议你先研究一下,然后再提问。 我想要更改系统ID,如果你正确地将它们标准化,它不会影响其他表,我的建议是先将它们标准化 规范化后,您不需要复杂的逻辑来理解。  根据我的理解,INNER JOIN最适合你。

@SysID int

SELECT 
* 
FROM System S1,
INNER JOIN
SET S2,
on S1.SystemID = S2.SystemID
INNER JOIN
ITEMS S3
on S2.SetID = S3.SetID
INNER JOIN
VERSIONS S4
on S3.ItemID = S4.ItemID
WHERE S1.SystemID = @SysID 

包含ID的字段是具有相同名称后跟" ID"的表的主键。和其他表引用时的外键。

如果有疑问,请告诉我 三江源