【发布时间】:2014-09-27 09:33:32
【问题描述】:
这是产品的表结构
PROD_ID CATEG_ID
1 2
2 21
3 211
4 5
5 51
这是一个类别的表结构
CATEG_ID PARENT_CATEG_ID
2 NULL
5 NULL
21 2
211 21
51 5
在为每个类别(包括嵌套类别)选择产品数量时遇到困难。
例如,类别2 有1 个产品,类别21 有1 个产品,类别211 有1 个产品,并且由于类别21 和221 分别是类别2 的直接/间接祖先,类别2 有3 个产品。所以我需要一个查询或只是一种方法来获得这样的东西:
CATEG_ID PARENT_CATEG_ID PRODUCT_COUNT
2 NULL 3 (including product count for categories 21 and 221)
5 NULL 2 (including product count for category 51)
21 2 2 (including product count for category 221)
211 21 1 (no category ancestor, only product count for self)
51 5 1 (no category ancestor, only product count for self)
是否可以仅使用 SQL 或我需要添加一些 PHP?
【问题讨论】:
-
类别是否遵循这种很好的模式,即通过删除 id 的最后一位来获得父级?
-
@Gordon Linoff 他们是,但在某种程度上,我不能依赖它
-
然后测试“a_horse_with_no_name”的答案,如果正确则接受并投票。
-
自从他发帖我就一直在玩sql。有些事情就是行不通,所以我没有接受。 Ty 无论如何都是为了你的兴趣
标签: sql postgresql recursive-query