Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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
如何在MySQL中对联合查询中的多个字段求和?_Mysql_Ms Access 2013 - Fatal编程技术网

如何在MySQL中对联合查询中的多个字段求和?

如何在MySQL中对联合查询中的多个字段求和?,mysql,ms-access-2013,Mysql,Ms Access 2013,我目前正在学习如何在查询中使用MySQL,我遇到了一个难题 目前,我有两个查询从多个表中获取数据。两个查询都包含相同数量的列字段和字段名 为简单起见,查询的输出如下所示: QueryOne: FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree data1 | data11 | data111 | 3 | 0 | 0 data2 | dat

我目前正在学习如何在查询中使用
MySQL
,我遇到了一个难题

目前,我有两个查询从多个表中获取数据。两个查询都包含相同数量的列字段和字段名

为简单起见,查询的输出如下所示:

QueryOne:

   FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree 
    data1  |  data11  |  data111   |    3     |     0    |      0
    data2  |  data22  |  data222   |    0     |     1    |      0
    data3  |  data33  |  data333   |    0     |     0    |      2
    data4  |  data44  |  data444   |    0     |     4    |      0
    data5  |  data55  |  data444   |    0     |     0    |      1
查询二:

   FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree 
    data1  |  data11  |  data111   |    1     |     0    |      0
    data1  |  data11  |  data111   |    0     |     0    |      2
    data6  |  data66  |  data666   |    0     |     5    |      0
两个查询都包含FieldOne FieldThree的相同数据,但CountOne CountThree可能包含不同的值

在任何情况下,数据都不会包含所有3个字段
CountOne、CountTwo、CountThree
中的值,而只包含这3个字段中的1中的值

我正在尝试创建一个单独的
联合查询
,该查询具有以下输出:

   FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree 
    data1  |  data11  |  data111   |    4     |     0    |      0
    data1  |  data11  |  data111   |    0     |     0    |      2
    data2  |  data22  |  data222   |    0     |     1    |      0
    data3  |  data33  |  data333   |    0     |     0    |      2
    data4  |  data44  |  data444   |    0     |     4    |      0
    data5  |  data55  |  data444   |    0     |     0    |      1
    data6  |  data66  |  data666   |    0     |     5    |      0
基本上,如果在
FieldOne
中有多个相同数据的实例,并且对于相同数据的多个实例,在相同的
CountOne
CountTwo
CountThree
中有一个值,我希望获得该字段的,并按
FieldOne
对该数据进行分组

但是,如果同一数据有多个实例,但它在不同的
Count
字段中包含一个值,那么查询应该为它创建一个单独的记录,如示例中所示,
data1
同时包含
CountOne
CountTwo
字段中的值

我在Access 2013的
SQL视图中使用
联合查询做了类似的操作

SELECT *
FROM [QueryOne]
ORDER BY FieldOne
UNION SELECT *
FROM [QueryTwo]
ORDER BY FieldTwo;

然而,由于我的知识有限,我一直致力于如何一次性将我想要的内容合并到上述代码中,而不是创建另一个单独的查询。

您可以根据union的结果使用select with sum和group by

select  FieldOne
    , FieldTwo 
    , FieldThree 
    , sum(CountOne )
    , sum(CountTwo )
    , sum(CountThree )
from ( 
          Select FieldOne
          , FieldTwo 
          , FieldThree 
          , CountOne 
          , CountTwo 
          , CountThree 
      FROM my_view1
      UNION ALL
      Select FieldOne
          , FieldTwo 
          , FieldThree 
          , CountOne 
          , CountTwo 
          , CountThree 
      FROM my_view2
  ) T 
group by  FieldOne
    , FieldTwo 
    , FieldThree 
order by FieldOne
如果要合并不同的值,可以使用UNION;如果要合并联合选择的所有结果,可以使用UNION ALL

并对union subselect中查询的用法进行“稍微混淆”

select  FieldOne
    , FieldTwo 
    , FieldThree 
    , sum(CountOne )
    , sum(CountTwo )
    , sum(CountThree )
from ( 
          Select FieldOne
          , FieldTwo 
          , FieldThree 
          , CountOne 
          , CountTwo 
          , CountThree 
      FROM ( select col1 as FieldOne, col2 as FieldTwo .....
             from   ...  
             where 

         ) TT_A
      UNION ALL
      Select FieldOne
          , FieldTwo 
          , FieldThree 
          , CountOne 
          , CountTwo 
          , CountThree 
      FROM ( select col1 as FieldOne, col2 as FieldTwo .....
             from   ...  
             where 

         ) TT_B
  ) T 
group by  FieldOne
    , FieldTwo 
    , FieldThree 
order by FieldOne

我想你也希望在输出中包含data2的值?@Nick是的,错过了那一个…问题UpdateAccess似乎是一个奇怪的环境,在其中学习MySQL很抱歉,但这一切都可以在Access的
SQL视图
中完成?为什么不。。使用您的视图,而不是my_table1和my_table2_name@Andre ... 对的非常感谢。。复制和粘贴错误。。回答更新抱歉,我对从
my_table 1
my_table 2
中选择
SELECT
有点困惑…我的两个查询都包含大量表,它们通过关系组合得到
FieldOne、FieldTwo、FieldThree、CountOne、CountTwo,CountThree
…我如何在我的
联合查询中使用它?…我不应该引用我的
查询一个
查询两个
?答案已更新。。为您的子查询提供建议。。希望是明确的。。