我有这张桌子。
Bundles
id | parent_id | quantity
1 | 0 | 1
2 | 1 | 4
3 | 2 | 5
我想获取 id 为 3 的捆绑包的总数量,即1 * 4 * 5 = 20
items
这可以通过单个查询来完成吗?
我有这张桌子。
Bundles
id | parent_id | quantity
1 | 0 | 1
2 | 1 | 4
3 | 2 | 5
我想获取 id 为 3 的捆绑包的总数量,即1 * 4 * 5 = 20
items
这可以通过单个查询来完成吗?
这是使用 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
列中值的乘法方法SELECT EXP(sum(log(quantity)))
,取自此处。