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

如何在SQL Server中根据给定的父ID从不同的表中获取所有子记录,sql,sql-server,Sql,Sql Server,我有4张不同的桌子: select * from System; select * from Set; select * from Item; select * from Versions; 现在,对于每个系统Id,将有n个集合,对于每个集合,将有n个项目,对于每个项目,将有n个版本 每个系统都有: n套的数量 每套都有 n项目数量 每一项都有 n版本数 当我有一个特定的SystemId时,我想在一个存储过程中检索每个集合的集合和项,以及每个项的版本,并用不同的Id再次将这些记录

我有4张不同的桌子:

select * from System;
select * from Set;
select * from Item;
select * from Versions; 
现在,对于每个系统Id,将有n个集合,对于每个集合,将有n个项目,对于每个项目,将有n个版本

每个系统都有:

  • n套的数量
  • 每套都有
    • n项目数量
    • 每一项都有
      • n版本数

当我有一个特定的
SystemId
时,我想在一个存储过程中检索每个集合的
集合
,以及每个项的
版本
,并用不同的Id再次将这些记录插入到相应的表中。

您可能会发现,我建议你在提问之前先研究一下。 如果您想更改系统id,那么如果您正确地规范化了其他表,就不会影响它们,我的建议是首先规范化它们 在规范化它们之后,您不需要复杂的逻辑来理解它们。 据我所知,内部连接最适合您

@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”和外键

如果有问题,请告诉我
谢谢

搜索
内部联接
中的
存在
您所说的
用不同的Id再次在相应的表中插入这些记录是什么意思。
?你能举个例子吗?一旦我检索了所有孩子的记录,然后我就用不同的系统Id引用将它们再次插入这些表中。