Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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 - Fatal编程技术网

Mysql 如何连接三个表,从两个表中添加两个单独的字段,然后最后按两个表中两个单独的字段分组

Mysql 如何连接三个表,从两个表中添加两个单独的字段,然后最后按两个表中两个单独的字段分组,mysql,Mysql,我有三张桌子,表2,表3 管理员结构是 admins_id | admin_name | admin_username 1 | ABC |1234 2 | Cde |456 table3mask |table3adminid | table3maskcount mask1 |1 |30 mask2 |1 |70 mask3 |2

我有三张桌子,表2,表3

管理员结构是

admins_id  | admin_name | admin_username
1          | ABC        |1234
2          | Cde        |456
table3mask |table3adminid | table3maskcount
mask1      |1              |30
mask2      |1              |70
mask3      |2              |10
表2结构为

table2mask |table2adminid | table2maskcount
mask1      |1              |30
mask2      |1              |60
表3结构为

admins_id  | admin_name | admin_username
1          | ABC        |1234
2          | Cde        |456
table3mask |table3adminid | table3maskcount
mask1      |1              |30
mask2      |1              |70
mask3      |2              |10
我想要达到的是

username   | mask        |ttlCount
1234       | mask1       | 60
1234       | mask2       | 130
456        | mask3       | 10
我应该如何做到这一点

我尝试使用下面给出的查询

SELECT admins.`admin_username`, 
(table2.`table2maskcount`+table3.`table3maskcount`) AS ttl_counts from 
admins inner join table2 on table2.`table2adminid` = admins.`admin_id` inner 
join table3 on table3.`table3adminid` = admins.`admin_id` Where 
table2.`table2mask`=table3.`table3mask`

但它没有给我准确的结果,它没有显示仅在其中一个表中可用的掩码计数

管理员
连接到其他两个表的并集,
按管理员分组
掩码
并聚合:

select a.admin_username username, t.mask, sum(maskcount) ttlcount
from admins a inner join (
  select 
    table2mask mask, 
    table2adminid adminid, 
    table2maskcount maskcount 
  from table2
  union all
  select * from table3
) t on t.adminid = a.admins_id 
group by a.admins_id, a.admin_username, t.mask
请参阅。
结果:


admins
连接到其他两个表的并集,
group by admin
mask
并聚合:

select a.admin_username username, t.mask, sum(maskcount) ttlcount
from admins a inner join (
  select 
    table2mask mask, 
    table2adminid adminid, 
    table2maskcount maskcount 
  from table2
  union all
  select * from table3
) t on t.adminid = a.admins_id 
group by a.admins_id, a.admin_username, t.mask
请参阅。
结果:

见:见: