MySQL如何获得项目的总和

MySQL如何获得项目的总和

我在编写适当的查询来解决我的问题时遇到了很大的问题。如此简短地描述我的问题:

A是由乘积B和C构成的集合。例如,集合A由4xB和1xC构成。集合A由4xB和1xC构成。

Set A
4x B
1x C


我也可以单独出售产品B或C。

因此,如果我出售一套A和一种产品B,我应该得到类似

Product:   Sold:
A          1
B          5
C          1


数据结构:

table products
id  name
1   A
2   B
3   C

table products_subset
id    parent_id    product_id    amount
1     1            2             4
2     1            3             1

table documents
doc_id   type    code
1        bill    INV-1
2        bill    INV-2

table document_products
id   doc_id   prod_id   amount    price
1    1        1         1         10
2    2        2         1         2


如果查询无法解决此问题,那么我将只编写代码来进行数学运算,但希望在查询本身中做尽可能多的事情。

最佳答案

SELECT
    product_id, `name`, SUM(amount)
FROM
    (SELECT
        dp.product_id, p.`name`, dp.amount
    FROM
        document_products dp
    JOIN products p ON p.id = dp.product_id
    UNION ALL
    SELECT
        ps.product_id, p1.`name`, ps.amount
    FROM
        document_products dp
    JOIN products p ON p.id = dp.product_id
    JOIN products_subset ps ON dp.product_id = ps.parent_id
    JOIN products p1 ON p1.id = ps.product_id) AS t1
GROUP BY 1 , 2


结果

id  name    amount
1   A       1
2   B       5
3   C       1

关于mysql - MySQL如何获得项目的总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45101392/

10-12 12:42