首页 > 解决方案 > 列的总和在连接表 PHP 中不起作用

问题描述

我正在尝试从and计算req_qtyand 。我正在尝试获取连接的 3 个表数据,. 问题来了,如果不保存将无法正常工作。我被这个留在了桌子上in_qtytable1table2SUM(req_qty)SUM(in_qty)req.qtytable2sku's ids

我在这里制作了一个非常简单的表格,用于计算列的总和。通常,列的总和乘以总行数。请不要关闭帖子和公会的其他线程。对于我的疑问,我在这里做了一张我能理解的表格。请帮忙。

table1

ID  |  sku_1 | req_qty | trans_id
----------------------------------
1   |  123   | 150     | 12345
2   |  142   | 200     | 256314
3   |  123   | 100     | 896523

表2

ID  | sku_2  | in_qty  | trans_key
-----------------------------------
1   | 142    | 50      | 002563

表3

ID |  sku_code  |  sku_name
--------------------------
1  | 142        |  ABC
2  | 123        |  XYZ

预期产出

ID | sku | sku_name | reqQty | inQty 
------------------------------------
1  | 123 | XYZ      | 250    | 0        
2  | 142 | ABC      | 200    | 50

标签: phpmysqlsumleft-joinunion

解决方案


编辑以在 table1 和 table2 为空时选择数据

SELECT table1.id, table3.sku_code as sku, table3.sku_name, 
       sum(table1.req_qty) as reqQty, sum(table2.in_qty) as inQty
  FROM table3
  LEFT JOIN table1 on table3.sku_code = table1.sku_1
  LEFT JOIN table2 on table3.sku_code = table2.sku_2
  GROUP BY table1.id, table3.sku_code, table3.sku_name

解释

您可以在此处查看有关左连接如何工作的说明https://www.w3schools.com/sql/sql_join_left.asp#:~:text=The%20LEFT%20JOIN%20keyword%20returns,if%20there%20is%20no% 20 场比赛

但是为了快速解释这个查询,我们将从 table3 中选择所有数据,左连接将从左表(此处为 table3)中查找所有记录,并从右表(此处为 table2 和表 1)中查找数学记录。


推荐阅读