我正在开发一个系统,其中我有一个类别和子类别列表。我已遵循给定的db结构:
category_id | category_name | Parent_id
1 India 0
2 US 0
3 Mumbai 1
4 Delhi 1
5 New Delhi 4
现在我有两个主要类别(印度和美国)和这两个父类别的3个子类别。我想计算最重要的母元素即印度和美国的子类别(没有其他子类别)的数量
例如
India
/ \
Mumbai Delhi
\
New Delhi
/ \
N1 N2
现在,我希望父ID为jsons,其中包含没有其他子类别的子类别。 在这种情况下,计数应为2,因为孟买没有子类别,新德里没有子类别。
{"category_name" : "India", "Count" => "3"} // (Mumbai , N1, N2 because they have no further subcategories)
应该循环完成所有父类别。我试图使用递归函数获取它,但没有得到确切的结果。 有什么帮助吗?
修改 我有类似的SQLFIDDLE,但它只显示子类别的数量。我想要一些没有进一步子类别的子类别。 请参阅给定的链接。 SQL Fiddle
答案 0 :(得分:0)
您可以使用以下查询来使用以下查询获取子节点数。
SELECT c.id,c.Name, COUNT(a.ID) as cnt
FROM tblparent c
INNER JOIN tblParent a
ON a.ParentID = c.ID
GROUP BY c.ID,c.Name
UNION
SELECT c.id,c.Name, 0 as cnt
FROM tblparent c
where c.ID not in (select parentid from tblParent)
它会给你以下结果
1 India 2
2 USA 0
3 Mumbai 0
4 Delhi 1
5 New Delhi 0
希望这会对你有帮助!
由于 苏雷什