我有一个与此类似的表:CREATE TABLE example ( id integer primary key, name char(200), parentid integer, value integer);我可以使用parentid字段将数据排列成树形结构。现在这是我无法解决的问题。给定一个parentid,是否有可能编写一条SQL语句以将该parentid下的所有值字段加起来并向下递归树的分支?更新:我正在使用posgreSQL,因此无法使用精美的MS-SQL功能。无论如何,我希望将其视为通用SQL问题。顺便说一句,给我留下深刻印象的是在提出问题的15分钟之内有6个答案!去堆栈溢出!
3 回答
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
如果要使用可在任何ANSI SQL-92 RDBMS 上使用的便携式解决方案,则需要在表中添加一个新列。
Joe Celko是使用嵌套集方法在SQL中存储层次结构的原始作者。您可以使用Google “嵌套集”层次结构来了解有关背景的更多信息。
或者,您可以将parentid重命名为leftid并添加一个rightid。
这里是我总结嵌套集的尝试,由于我不是Joe Celko,嵌套集将严重不足:SQL是基于集的语言,而邻接模型(存储父ID)不是层次结构的基于集的表示。因此,没有查询基于纯模式的邻接模式的方法。
但是,近年来,大多数主要平台都引入了扩展来解决这一精确问题。因此,如果有人回复了Postgres专用的解决方案,请务必使用该解决方案。
- 3 回答
- 0 关注
- 576 浏览
添加回答
举报
0/150
提交
取消