Postgresql
根據類別樹表計算產品數量
有必要計算每個類別中創建了多少產品,當然,必須為父級考慮在子級中創建的產品。我該怎麼做那個 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
或使用參數。