我想在该部分中显示网站上的子部分,每个部分中的帖子数。
Услуги
-- Автоуслуги
---- Автокраны
---- Манипуляторы
-- Коммуникации
---- Водоснабжение
---- Электроснабжение
-- Строительство
---- Фундамент
也就是说,我转到服务部分,子部分显示在我的页面上
Автоуслуги 10
Коммуникации 20
Строительство 30
昨天我正在使用 MySQL 并这样做:
SELECT c.id, c.name, c.alias, COUNT(p.id) AS count
FROM categories c
LEFT JOIN posts p ON p.category_id = c.id
WHERE
c.category_id = ?
GROUP BY c.id
但是今天,我突然意识到我不计算嵌套类别中的帖子。因为 部分可以有不同的嵌套,需要递归查询。在网上阅读后,我经常看到一个说法,MySQL 不支持这样的查询。我决定切换到 PostgreSQL。但是由于我不熟悉它,所以我在编写请求时遇到了问题。
这是我刚刚写的:
WITH RECURSIVE r AS (
SELECT c.id, c.name, c.alias, 0 AS amount
FROM categories AS c
WHERE c.category_id = ?
UNION
SELECT c.id, c.name, c.alias, amount + COUNT(p.id) AS amount
FROM r c
LEFT JOIN posts AS p ON c.id = p.category_id
)
SELECT * FROM r;
但似乎我做错了,因为我没有看到过渡到下一级的类别嵌套。你能帮我提出正确的要求吗?
一般来说,是这样的:
sqlfiddle.com上的示例