在我的系统中,每个项目都有一些标签。现在我想向用户展示带有标签的树。树应具有第一级的所有标签。
在每个一级标签内,应该再次出现在同样属于一级标签的项目中找到的所有标签。
在第三层,应该出现属于第一层和第二层的标签,以此类推。
这个想法是,用户可以根据他的标签过滤项目,并且可以改进在树中输入的过滤,而无需键入标签。
项目最初是作为字符串字段存储在项目表中的,但为了轻松实现此解决方案,我已将它们移动到子表中。
使用这些项目作为输入:
|Item |Tags |
|-----------|--------|
|Computer |a,b,c |
|Mouse |a,c |
|Keyboard |c,d |
|Monitor |a,b |
应该输出这棵树:
Tree Items that are show when selected
root Computer,Mouse,Keyboard,Monitor
+--a Computer,Mouse,Monitor
| +--b Computer,Monitor
| | +--c Computer
| +--c Computer,Mouse
| +--b Computer
+--b Computer,Monitor
| +--a Computer,Monitor
| | +--c Computer
| +--c Computer
| +--a Computer
+--c Computer,Mouse,Keyboard
| +--a Computer,Mouse
| | +--b Computer
| +--b Computer
| | +--a Computer
| +--d Keyboard
+--d Keyboard
+--c Keyboard
此 SQL 应仅在 Oracle 数据库中运行,因此可以使用connect by
运算符。
我从 Delicious 的 Firefox 扩展中选择了这种行为,它以树的形式显示标签,但限制它只有两个级别,我需要它显示尽可能多的级别。
你有什么主意吗?
提前致谢。