Mysql 如何连接三个表,从两个表中添加两个单独的字段,然后最后按两个表中两个单独的字段分组
我有三张桌子,表2,表3 管理员结构是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
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
请参阅。结果: 见:见: