【发布时间】:2011-03-24 05:05:06
【问题描述】:
我在 SQLite3 数据库中有一个简单的类别层次结构,每行存储一个父 ID 或 NULL(视情况而定)。
我想找出特定类别是否是叶子,主要是通过确定每一行是否定义了父 ID。或者更确切地说,确定每行的子行数。
表定义:
CREATE TABLE category (
id INTEGER PRIMARY KEY AUTOINCREMENT
name TEXT NOT NULL
parent_id INTEGER DEFAULT NULL
);
样本数据:
id 名称 parent_id ---------- ---------- ---------- 34 人 35个国家 36 美国 35 37 流行 36 38 摇滚 36 39 日本 35 40 流行 39 42 摇滚 39 43 日本流行音乐 40所需的输出:
原始数据加上每行有多少子类别(子类别)的计数。
这看起来可能很简单(?),但由于我通常会迷失在简单的 JOIN 之外,所以到目前为止我还没有走得太远。我检查了类似的问题,但它们似乎是跨表连接,或者想要对整个层次结构中的所有子级进行更复杂的计数,而不仅仅是直接子级行。
可能需要更改表架构(例如,如果 child_id 或 child_count),但我不想这样做。
任何意见将不胜感激。
【问题讨论】: