【发布时间】:2020-04-11 03:08:32
【问题描述】:
我有两个名为 Topics 和 DocumentTopics 的表
主题表具有以下结构
di_name |父主题
Topics 中的记录可以是主主题,也可以是主主题的子主题。如果记录是主主题,则 parentTopic 的值为空。
DocumentsTopics 具有以下结构
doc_name | topic_di_name
documentsTopics 按名称和主题保存我所有文档的记录。我可以使用 topic->di_name 和 documentTopics->topic_di_name
加入两个表SELECT t1.topic_di_name, count(t1.topic_di_name) as count
FROM DocumentsTopics t1
INNER JOIN Topics t2
ON t1.topic_di_name = t2.di_name
GROUP BY t1.topic_di_name;
但我真正想要的是仅按主要主题对主题进行分组,并获得主要主题下所有记录及其所有子主题的总和。这些可能会深入到不止一个级别。
有 2 个主要主题,但只有一个有兄弟姐妹。我要查找的总计数仅针对主要主题,但它们应包括其中所有同级主题的计数。
我猜测这样做的唯一方法是运行递归函数,但我不确定如何使用单个 SQL 查询来做到这一点。有可能吗?
任何帮助将不胜感激
【问题讨论】:
-
样本数据和期望的结果将阐明您想要做什么。
-
这可以在 MySQL 8.x 中完成。你有 MySQL 5.x 还是 8.x?
-
正如 Gordon 所说,一些示例数据和预期结果对帮助您至关重要。
-
我可以得到最新的 MySQL。我有一个新的 UBUNTU 安装,所以假设 MySQL 8.x。我正在努力获取一些示例数据。
-
@JohnyDGood “有 2 个主要主题,但只有一个有兄弟姐妹。”你的意思是只有一个有孩子?