Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何连接多个表,其中某些列(而不是所有列)是相同的,并返回每个列的总和?_Php_Mysql_Outer Join - Fatal编程技术网

Php 如何连接多个表,其中某些列(而不是所有列)是相同的,并返回每个列的总和?

Php 如何连接多个表,其中某些列(而不是所有列)是相同的,并返回每个列的总和?,php,mysql,outer-join,Php,Mysql,Outer Join,我有多个表,跟踪来自不同位置(即寒冷和温暖)的信息,这些位置根据季节提供服务,并且需要创建位置的公司级视图 查看联合和联接的描述,看起来表必须具有相同的列数或相同的列名。我需要的是一个结果,使用PHP MySQL提供相同列和唯一列的总和 表1 +-------+-------+-------+ |A列| B列| C列| +-------+-------+-------+ | 2 | 8 | 5 | +-------+-------+-------+ | 1 |

我有多个表,跟踪来自不同位置(即寒冷和温暖)的信息,这些位置根据季节提供服务,并且需要创建位置的公司级视图

查看联合和联接的描述,看起来表必须具有相同的列数或相同的列名。我需要的是一个结果,使用PHP MySQL提供相同列和唯一列的总和

表1
+-------+-------+-------+
|A列| B列| C列|
+-------+-------+-------+
|   2   |    8  |   5   |
+-------+-------+-------+
|   1   |    9  |   7   |
+-------+-------+-------+
|   3   |    2  |   3   |
+-------+-------+-------+
表2
+-------+-------+-------+
|第1列|第2列|第3列|
+-------+-------+-------+
|   2   |    1  |   6   |
+-------+-------+-------+
|   5   |    5  |   4   |
+-------+-------+-------+
|   2   |    7  |   3   |
+-------+-------+-------+
表3
+-------+-------+-------+-------+-------+-------+
|col-A | col-B | col-1 | col-2 | col-3 | col-4|
+-------+-------+-------+-------+-------+-------+
|   9   |    4  |   1   |   2   |    1  |   4   |
+-------+-------+-------+-------+-------+-------+
|   2   |    6  |   6   |   8   |    3  |   6   |
+-------+-------+-------+-------+-------+-------+
|   4   |    7  |   3   |   2   |    4  |   5   |
+-------+-------+-------+-------+-------+-------+
结果表
+-------+-------+-------+-------+-------+-------+-------+
|col-A | col-B | col-C | col-1 | col-2 | col-3 | col-4|
+-------+-------+-------+-------+-------+-------+-------+
|   21  |   36  |   15  |   19  |   25  |   21  |   15  |

+-------+-------+-------+-------+-------+-------+-------+
我认为这可以通过
联合来实现,如下所示:

SELECT SUM(`col-A`) AS 'Col-A',SUM(`col-b`) AS 'Col-B',
       SUM(`col-C`) AS 'Col-C',SUM(`col-1`) AS 'Col-1',
       SUM(`col-2`) AS 'Col-2',SUM(`col-3`) AS 'Col-3',SUM(`col-4`) AS 'Col-4' 
  FROM
(SELECT `col-A`,`col-b`,0 AS 'col-c',`col-1`,`col-2`,`col-3`,`col-4` FROM table_3 UNION
SELECT 0,0,0,`col-1`,`col-2`,`col-3`,0 FROM table_2 UNION
SELECT `col-A`,`col-b`,`col-C`, 0,0,0,0 FROM table_1 ) XX

因为表3的列最多,所以我把它放在联合体的顶部。下面的查询只需要填写
0
(零),表中不存在该列即可满足union要求。

谢谢,这就解决了问题,我想我现在理解了这个概念。对“缺少”的列使用“0”。现在我只需要弄清楚如何为一个动态数据库实现这个解决方案(天气是不可预测的)。我尝试了没有它的解决方案,但收到了错误。XX用作子查询的别名。这就像将子查询分配给一个名称,并将其视为表名。您可以更改为所需的任何varchar值,如
A、B、A1、B1、mytable、subtable
等。