按子节点过滤产品数
问题描述:
以下SQL代码工作正常,但无法选择/过滤类别。带来所有类别。按子节点过滤产品数
举个例子,
Cars (20) (root)
---> Blue cars (12)
----------> Ford (2)
----------> Bmw (9)
----------> Dodge (1)
---> Red cars (9)
----------> Xxxx (9)
---> Black cars (1)
----------> Yy (1)
如何选择只有蓝色轿车的范畴。 (与子节点)
如何更改此代码的SQL代码可以完成?
我想要的结果如下。 (如果我选择一辆蓝色轿车类)
---> blue cars (12)
----------> ford (2)
----------> bmw (9)
----------> dodge (1)
这是SQL代码...
SELECT
parent.cid,
parent.title,
(SELECT COUNT(parent2.cid) FROM categories AS parent2 WHERE parent.lft > parent2.lft AND parent.rgt < parent2.rgt) AS depth,
COUNT(products.cat_id) AS total
FROM categories AS node,
categories AS parent,
products
WHERE
node.lft BETWEEN parent.lft AND parent.rgt
AND node.cid = products.cat_id
GROUP BY parent.cid having depth <= 5
ORDER BY parent.lft
答
我觉得你一直在这得太多 - 让子树是关于嵌套集合
的simplist操作SELECT *
FROM categories
WHERE lft BETWEEN bluecarleftvalue AND bluecarrightvalue
ORDER BY lft ASC
+0
基本上是的。但我需要计数产品。 – 2013-02-15 10:56:27
+0
类别和产品之间的链接是什么? – 2013-02-15 20:22:39
你是如何保存你的heirachy? - 看到你的选择这个问题http://*.com/questions/4048151/what-are-the-options-for-storing-hierarchical-data-in-a-relational-database – 2013-02-14 23:02:02
嵌套集模型 – 2013-02-14 23:08:12
我认为所有你需要做的是添加'AND node.cid ='(无论cid是蓝色汽车的ID) – cha 2013-02-15 00:38:50