我在创建SQL查询时遇到问题,如下所示:
我有两个表,其中包含以下规格和数据:
http://dc699.4shared.com/img/lgtP3N_4ce/s3/144c7252ff8/SQL1.jpg
我想创建一个SQL Select查询,以便为我返回一个分层模型,如下所示:
例如,如果SID是3,它应该为我返回以下内容:
http://dc699.4shared.com/img/8UufpK2-ce/s3/144c7255af0/SQL2.jpg
因为结构表中与数据7、8、9和9相关的数字3与10、11相关(请注意,9与3相关,或者换句话说,9是3的子集)
有人能帮我创建这个查询吗?我已经试了两个星期了,但是失败了:
非常感谢
发布于 2014-03-16 04:17:10
未经测试的答案,它不包括根成员的可读性,因为您在问题和注释中的示例不一致。这应该能让你振作起来。
我从root =1开始进行查询
WITH members (id)
AS
(SELECT MID as id FROM structure WHERE SID = 1
UNION ALL
SELECT MID as id
FROM members
INNER JOIN structure ON (members.id = structure.SID)
)
SELECT members.ID FROM members;members是由CTE创建的中间表(带有...)
发布于 2014-03-16 23:25:48
您也可以尝试像这样的Rank解决方案
WITH Personel_Structure AS( SELECT SID,MID,RANK() OVER(PARTITION BY SID ORDER BY MID ASC) AS POS FROM Structure WHERE SID =3) SELECT SID,MID FROM Personel_Structure ORDER BY POS ASC
如果您需要连接到personel表,我有针对结构表的脚本,这应该很容易。只要加入CTE中的表格即可。
https://stackoverflow.com/questions/22428291
复制相似问题