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

SQL - Get first level nodes from a nested structure

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

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

这是docman_categoriestable的一部分:

docman_category_id INTEGER
title VARCHAR

而这个table与docman_category_relations有关,也就是定义树的那个:

ancestor_id INT
descendant_id INT
level INT

据我了解,ancestor_iddescendant_id 是 docman_categories table 与 docman_document_id 的关系,而 level 是一个数字,用于了解 ancestor_iddescendant_id.

之间的距离(多少级别)

而且我一直在尝试查找获取第一级项目的查询...你能帮我解决这个查询吗?

更多信息

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

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

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