1

我有这张桌子。

Bundles

id | parent_id | quantity
 1 | 0         | 1
 2 | 1         | 4
 3 | 2         | 5

我想获取 id 为 3 的捆绑包的总数量,即1 * 4 * 5 = 20items

这可以通过单个查询来完成吗?

4

1 回答 1

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

演示 SQL 小提琴

列中值的乘法方法SELECT EXP(sum(log(quantity))),取自此处

于 2014-08-07T15:34:19.117 回答