假设我有一个区域表( id,parentId,name,path )。
给定一个Id,我希望获得给定区域的所有孩子(包括孩子的孩子,递归地)。
我确实在路径中存储了从父级到子级的路径。
示例:
1 NULL New York /1/
2 1 BRONX /1/2/
3 1 MANH /1/3/
4 3 UpWest /1/3/4/
5 3 MidEast /1/3/5/因此,当询问纽约的孩子是什么时,查询应该返回bronx、manh、upwest和mideast。不只是布朗克斯和曼。
发布于 2009-10-26 21:55:57
将返回id为1的city子级的所有区域(例如,纽约)。您可以将该号码更改为任何其他城市,以便也返回它的孩子
select * from areas where path like '%/1/%'发布于 2009-10-26 21:58:55
您可以使用
SELECT * FROM Areas WHERE Path LIKE '%/1/%'如果您存储了路径
发布于 2009-10-26 22:14:56
如果你有一个设定的数字深度,你知道你永远不会比这个更深,这将会做你想要的:
select * from areas a1
join areas a2 on a1.id = a2.parent
join areas a3 on a2.id = a3.parent
join areas a4 on a3.id = a4.parent
join areas a5 on a4.id = a5.parent
where a1 = 1; --or whatever value you're searching for.编辑:但是,如果你已经保存了路径(我直到现在才注意到),像'%/1/%‘这样的路径显然是更好的解决方案。
https://stackoverflow.com/questions/1624923
复制相似问题