我试图获取与父级相关的所有子ids (多个级别)。我认为使用递归可以达到这个目的,在尝试了查询之后--它没有返回预期的结果--我甚至不确定这是否是解决这个问题的方式,也不确定我的问题出在哪里。
预期结果是返回指定地点的所有市县。
例如,如果我传递给英格兰的id (id=1),我想返回与它相关的所有id。它可以达到4-5级的联系。
例如
Id Location
----- ---------------
1 England
3 London (as its associated with England)
5 Ealing (as associated with London)
6 Westminster (as associated with London)
7 Camden (as associated with London)
8 Barnet (as associated with London)。。。
SQL示例
有人能告诉我如何解决这个问题吗?这是处理这个问题的正确方法吗?
谢谢。
发布于 2014-10-22 12:44:08
你在朝正确的方向前进。
考虑一下我所取得的成果:
;WITH locationFamily AS
(
SELECT id
,location_name
,parent_id
,0 as level
FROM location
WHERE parent_id IS NULL
and id = 1
UNION ALL
SELECT ls.id
,ls.location_name
,ls.parent_id
,level + 1
FROM location ls
INNER JOIN locationFamily lf ON ls.parent_id= lf.id
)
SELECT *
FROM locationFamily 将id条件移动到CTE中的第一个选择,更改id连接的别名。
发布于 2014-10-22 12:10:44
本教程很好地概述了如何在sql中存储层次数据。
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
最初来自于这个问题:如何在mySQL表中表示树结构
https://stackoverflow.com/questions/26506978
复制相似问题