我在 MsSQL 中有三个表来存储数据。
第一个是 Children 包含以下行 ID、Name、Age、FatherID、SchoolID
第二个包含他们父亲的数据,比如这个父亲ID、姓名、年龄
第三个是带有 SchoolID 和 SchoolName、Address 等的 School。
(关系是:多个孩子可以有同一个父亲,很明显:))
我要列出的是与给定 SchoolID 相关的所有家庭成员。
我知道一个基于游标的解决方案:
*Cursor 正在处理两个临时表,第一步将具有给定 schoolid 的孩子选择到一个临时表中(@tempfamilymembers)。
第二步是从该表中选择不同的fatherids 并将其保存到第二个临时表(@fatherids)。
然后,我将遍历这些fatherids 以将具有匹配fatherids 的父亲(来自@fatherids)插入到第一个临时表(@tempfamilymembers)中。
然后,我可以从@tempfamilymembers中选择所有来完成查询*
基于游标的解决方案太难了,而且相对较慢,而且我听说 while 循环显示出更好的性能,而基于集合的方法会更好。
我的问题是:我可以在不创建游标的情况下以某种方式实现这一目标吗? (即使他有多个孩子,我也只想列出此列表中出现的父亲一次。)