我有這個關系資料模型
產品表
| ID | 型別 | 可配置_product_id |
|---|---|---|
| 1 | 可配置 | 空值 |
| 2 | 簡單的 | 1 |
| 3 | 簡單的 | 1 |
| 4 | 簡單的 | 1 |
產品來源
| ID | 產品編號 | 數量 |
|---|---|---|
| 1 | 2 | 50 |
| 2 | 3 | 20 |
| 3 | 4 | 10 |
包含產品串列的表,有兩種型別:可配置和簡單。簡單產品鏈接到可配置產品。包含不同產品數量的 product_source 表。我想查詢以獲取產品的所有數量,這樣: 如果是可配置產品,則數量是簡單產品的數量之和 如果是簡單產品,則是簡單產品的數量只要。
以下是上述資料的預期結果:
結果
| 產品編號 | 數量 |
|---|---|
| 1 | 80 |
| 2 | 50 |
| 3 | 20 |
| 4 | 10 |
你知道如何進行嗎?
目前,我已經考慮過這種型別的請求,但我不知道如何完成'CONFIGURABLE'案例
SELECT
pr.id,
pr.type,
pr.configurable_product_id,
CASE
WHEN (pr.type = 'SIMPLE') THEN ps.quantity
WHEN (pr.type = 'CONFIGURABLE') THEN (????)
END AS quantity
FROM public."product" as pr
LEFT JOIN public."product_source" as ps
ON ps.product_id = pr.id
uj5u.com熱心網友回復:
您可以使用window function和partition來計算sum數量(就像group by)
演示
SELECT
pr.id AS product_id,
CASE
WHEN (pr.type = 'SIMPLE') THEN ps.quantity
WHEN (pr.type = 'CONFIGURABLE') THEN SUM(ps.quantity) over ()
END AS quantity
FROM public."product" as pr
LEFT JOIN public."product_source" as ps
ON ps.product_id = pr.id
ORDER BY pr.id
uj5u.com熱心網友回復:
你的是:
(
SELECT SUM(ps2.quantity)
FROM product as pr2
LEFT JOIN product_source as ps2
ON ps2.product_id = pr2.id
WHERE pr2.configurable_product_id = pr.id
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/358150.html
標籤:sql PostgreSQL的 加入 和
上一篇:如何獲得以下格式的sql結果
