MySQL如何对两个不同的数据表进行聚合求和?

How do MySQL aggregate sum function with two different data tables?

 SELECT
    category_id,
    product_size,
    category_name,
    SUM(product_quantity) AS total_quantity
FROM tbl_categories_quantity  -- (table-1)
INNER JOIN tbl_categories USING (category_id)
GROUP BY category_id,product_size

以上代码在单个 table 中有效,我想添加以下无效的代码(第二个 table)

SELECT
    category_id,
    product_size,
    SUM(product_sell) AS total_sell
FROM tbl_product_sell -- (table-2)
GROUP BY category_id,product_size;

first 子查询检索类别和产品大小明智的总数 quantitysecond 一个检索总 销售额 基于类别和产品尺寸。然后将这两个子查询与 LEFT JOIN 结合起来,因为有时销售可能不会发生。 COALESCE() 用于将 NULL 值替换为 0(零)。如果需要特定类别或产品尺寸方面的数据,则在两个子查询中都使用 WHERE 子句。由于类别 ID 是唯一的,因此使用 MAX(category_name) 否则类别名称必须放在 GROUP BY 子句中。从总数量中减去总销售额计算 可用数量。

   -- MySQL
    SELECT t.category_name category
         , t.product_size
         , t.product_quantity
         , COALESCE(p.total_sell, 0) product_sell
         , (t.product_quantity - COALESCE(p.total_sell, 0)) available_in_stock
    FROM (SELECT tc.category_id
               , tcq.product_size
               , MAX(tc.category_name) category_name
               , SUM(tcq.product_quantity) product_quantity
          FROM tbl_categories tc
          INNER JOIN tbl_categories_quantity tcq
                  ON tc.category_id = tcq.category_id 
          GROUP BY tc.category_id
                 , tcq.product_size) t
    LEFT JOIN (SELECT category_id
                    , product_size
                    , SUM(product_sell) total_sell
               FROM tbl_stock_sell
               GROUP BY category_id
                      , product_size) p
           ON t.category_id = p.category_id
          AND t.product_size = p.product_size

请检查url https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=b8c54aa656d9dc930fcb7a93d2bc0960

N.B.: Table 名称或列名称可能因您的数据库而异。