如何在SQL Server中根据给定的父ID从不同的表中获取所有子记录
我有4张不同的桌子:如何在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再次将这些记录
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引用将它们再次插入这些表中。