描述:一张分组表 为简化问题,只列出核心字段:
id:分组ID,
name:分组名称;
parentID : 父分组的ID
问题是:能不能通过SQL,对于指定的分组,查出下面所有的分组(包括分组下的分组)。
希望的效果:比如分组1下面有分组2和分组3,分组2下面还有分组4,现在给定分组1的ID,希望查询出来的结果包括分组2,分组3,以及分组4。
描述:一张分组表 为简化问题,只列出核心字段:
id:分组ID,
name:分组名称;
parentID : 父分组的ID
问题是:能不能通过SQL,对于指定的分组,查出下面所有的分组(包括分组下的分组)。
希望的效果:比如分组1下面有分组2和分组3,分组2下面还有分组4,现在给定分组1的ID,希望查询出来的结果包括分组2,分组3,以及分组4。
这个问题是个历史悠久的问题。
从结论说,想一句SQL文是搞不定。特别是楼主还不想依赖DB。
(大多数是DB里写函数的。)
如果需求只是列出根节点的所有子孙节点的话,简易的解决方案是表上再加个RootID的字段。
如果DB根本不让动,或者需求是从任意节点起的话,就只能程序里再循环了。
这两种。
为了效率,可以一次取两层。类似
[code="sql"]
...
where id = {param} or parentID = {param}
[/code]