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_id
和 descendant_id
是 docman_categories table 与 docman_document_id
的关系,而 level
是一个数字,用于了解 ancestor_id
和 descendant_id
.
之间的距离(多少级别)
而且我一直在尝试查找获取第一级项目的查询...你能帮我解决这个查询吗?
更多信息
在docman_category_relations、ancestor_id
和descendant_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
我正在使用 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_id
和 descendant_id
是 docman_categories table 与 docman_document_id
的关系,而 level
是一个数字,用于了解 ancestor_id
和 descendant_id
.
而且我一直在尝试查找获取第一级项目的查询...你能帮我解决这个查询吗?
更多信息
在docman_category_relations、ancestor_id
和descendant_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