SQL - 从嵌套结构中获取第一级节点

时间:2015-01-30 09:25:13

标签: mysql sql tree

我正在使用Joomla和Docman组件。我需要访问MySQL中的一些存储数据,但我无法确定如何查询它们。

我需要的是文档树的顶级节点列表,看起来很简单(SELECT * FROM categories WHERE parent IS NULL),但是Docman使用另一种结构。

以下是docman_categories表的一部分:

docman_category_id INTEGER
title VARCHAR

此表与docman_category_relations相关,后者是定义树的人:

ancestor_id INT
descendant_id INT
level INT

据我所知,ancestor_iddescendant_id是来自docman_categories表的docman_document_id的关系,level是一个知道距离多远的数字(多少)等级)介于ancestor_iddescendant_id之间。

我一直试图找到一个查询来获得第一级项目......请问您能帮我解决这个问题吗?

更多信息

在docman_category_relations中,ancestor_iddescendant_id没有任何空值。

1 个答案:

答案 0 :(得分:0)

以下是仅获取顶级节点的正确查询:

SELECT * 
FROM docman_category_relations dcr 
WHERE
    (SELECT COUNT(ancestor_id) 
     FROM docman_category_relations r 
     WHERE r.descendant_id = cr.descendant_id) = 1