我有这张桌子。
Bundles
id | parent_id | quantity
1 | 0 | 1
2 | 1 | 4
3 | 2 | 5
我想获取ID为3的捆绑包的总数量,即1 * 4 * 5 = 20
个商品
这可以通过一个查询完成吗?
答案 0 :(得分:3)
以下是使用CTE的解决方案:
<强>设定:强>
CREATE TABLE Table1
(id int, parent_id int, quantity int)
;
INSERT INTO Table1
(id, parent_id, quantity)
VALUES
(1, 0, 1),
(2, 1, 4),
(3, 2, 5),
(4, 0, 7),
(5, 4, 10)
;
CTE返回总计id=3
及其父项:
;WITH myCTE AS
(
SELECT id, parent_id, quantity
FROM Table1
WHERE id = 3
UNION ALL
SELECT T.id, T.parent_id, T.quantity
FROM Table1 T
JOIN myCTE C ON T.id = C.parent_id
)
SELECT EXP(sum(log(quantity)))
FROM myCTE
从here获取的SELECT EXP(sum(log(quantity)))
列中值的乘法方法。