获取没有其他子类别的子类别的计数

时间:2014-03-28 14:46:46

标签: php

我正在开发一个系统,其中我有一个类别和子类别列表。我已遵循给定的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

1 个答案:

答案 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

希望这会对你有帮助!

由于 苏雷什