我有一个表格,其中包含以下列方式相关的记录:
父母,孩子,孙子。我希望能够运行查询来执行以下操作:
我希望此查询以排序方式返回数据,因此我可以创建结构化文档(例如,来自查询结果的XML)。通过“排序”,我的意思是结果集是父母那个孩子的“GROUPED”,那么孙子
我设计了一个这样的简单表格(PSEUDO CODE):
CREATE TABLE family_tree {id integer
, parent_id integer
, child_id integer
, fname varchar(16)
, lname varchar(32) };
我有很多问题:
(记住我想要运行的查询[(1) - (6)])这是最好的(即我可以使用的最有效的表结构?如果不是,那是什么?< / p>
任何人都可以帮我编写ANSI SQL语句来执行上面的查询(1) - (6)吗?
答案 0 :(得分:2)
所以拥有id,parent_id,left,right
列是您最好的选择。该教程包含整个代码,但SQL查询应该足够清晰。
您应该能够从教程中提供的那些查询中获取所有查询。
答案 1 :(得分:0)
我看到你已经接受了Eimantas的回答,说
“所以拥有id,parent_id,left,right列是最好的选择。”
我想明确指出引用链接中的以下引用(italics mine):
“添加节点
我们如何向树中添加节点?有两种方法:您可以将父列保留在表中,然后重新运行rebuild_tree()函数 - 一个简单但不那么优雅的函数; 或者您可以更新新节点右侧所有节点的左右值。“