【发布时间】:2012-02-10 18:25:58
【问题描述】:
编辑:阅读您的一些答案后,我注意到我不需要递归,但需要一些查询来处理树。我目前正在阅读以下帖子http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/,它提供了我不知道的基本概念和正确的方法。非常感谢,我会继续阅读发布的链接:)
我正在研究一棵树,其中每个节点都可以有子节点。每个节点都有自己的子节点自动生成的 node_id 来引用其父节点。一个简单的表格示例如下:
如果不存在`arbres`,则创建表( `node_id` int(11) NOT NULL AUTO_INCREMENT, `pare_id` int(11) 默认为空, 主键(`node_id`), ) 引擎=InnoDB 默认字符集=utf8 AUTO_INCREMENT=470 ; ALTER TABLE arbres ADD CONSTRAINT FK_E6A4F221A4467B16 FOREIGN KEY (pare_id) REFERENCES arbres(node_id) ON DELETE CASCADE;我正在尝试的是在单个查询中找到一个能够选择每个孩子等等的查询,我的意思是孩子的孩子、孩子的孩子的孩子等等。我对 sql 很陌生,所以我可以用多个 sql 语句来完成它,这不是一个好主意。谢谢你的时间。
【问题讨论】:
-
也许这会让你开始:stackoverflow.com/q/1323245/535275
-
MySQL 不支持递归查询。您将需要创建一个存储过程来执行此操作,更改您的数据模型或“升级”到支持递归查询的 DBMS,例如 PostgreSQL 或 Firebird(或任何商业查询)