Postgresql

根據類別樹表計算產品數量

  • February 20, 2020

有必要計算每個類別中創建了多少產品,當然,必須為父級考慮在子級中創建的產品。我該怎麼做那個 SQL/Postgresql?

第二個解釋如果第一個不清楚 - 我應該創建一個查詢,該查詢也將基於 categoryId 和 categoryIds 子項計算產品數量。

數據庫架構

Table Category
-------------
id
name
parentId
-------------
ROWS
1 rootCategory null
2 child1 1
3 child2 2




Table Product
------------
id
name
categoryId
------------
ROWS
1 productOne 1
2 productTwo 2
3 productOne 2
4 productOne 3

如果選擇 categoryId = 1,則應顯示此類別及其子類別的產品計數。在此範例中,根類別計數的答案應為 4,因為它還有兩個子類別,在產品表中也有三個項目。

使用遞歸 CTE:

WITH RECURSIVE cats AS (
  SELECT 1::bigint AS id
UNION
  SELECT c.id
  FROM category AS c
     JOIN cats ON c.parentid = cats.id
)
SELECT count(*)
FROM product
  JOIN cats ON cats.id = product.categoryid;

此查詢以類別id號 1 為例。將其替換為適當的類別id或使用參數。

引用自:https://dba.stackexchange.com/questions/260111