设计一个数据库的表来存储树形结构
要求:
- 输入父节点返回所有子节点
- 输入某节点返回所有兄弟节点
表名:tree
字段:
- id:节点 ID
- name:节点名称
- parent_id:父节点 ID(如果是根节点,则 parent_id 为 NULL)
- path:节点路径(用逗号分隔的节点 ID 路径,例如:1,2,3 表示该节点为跟节点的第二级子节点的第三级子节点)
- level:节点层级(跟节点为 0 级,其子节点为 1 级,以此类推)
示例数据:
id | name | parent_id | path | level |
---|---|---|---|---|
1 | Root | NULL | 1 | 0 |
2 | Child1 | 1 | 1,2 | 1 |
3 | Child2 | 1 | 1,3 | 1 |
4 | Grand1 | 2 | 1,2,4 | 2 |
5 | Grand2 | 2 | 1,2,5 | 2 |
6 | Grand3 | 3 | 1,3,6 | 2 |
7 | Grand4 | 3 | 1,3,7 | 2 |
8 | Grand5 | 6 | 1,3,6,8 | 3 |
9 | Grand6 | 7 | 1,3,7,9 | 3 |
查询所有子节点:
SELECT * FROM tree WHERE parent_id = {父节点 ID}
查询所有兄弟节点:
SELECT * FROM tree WHERE parent_id = {该节点的父节点 ID} AND id != {该节点 ID}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论