我的 SQL - 由其他字段对多表分组的 COUNT 字段

My SQL - COUNT field on multitable group by other field

我没有创建正确的请求。

我的要求是:

select actionreal, sum(nb_actions) nb_actions from ( 
  select actionreal, count(distinct departement) nb_actions 
  from militant_action_nutrition 
  where actionreal in (1, 2, 3) 
  group by actionreal 
  union 
  select actionreal, count(distinct departement) nb_actions 
  from militant_action_jna 
  where actionreal in (1, 2, 3) 
  group by actionreal 
) t
group by actionreal

我需要通过 actionreal 在 2 个表上获取不同部门的数量。

在militant_action_nutrition我有
"Bas-Rhin" 和 "Manche" 用于 actionreal=1 ,"Bas-Rhin" 等 "Manche" 用于 actionreal=2.

在militant_action_jna我有
"Bas-Rhin"、"Manche" 和 "Yonne" 用于 actionreal=1,"Bas-Rhin" 等 "Manche" 用于 actionreal=2。

我的请求结果是:

1 | 5
2 | 2

但我需要结果:

1 | 3
2 | 2

感谢您的帮助。

先做一个联合,然后分组:

select actionreal, count(distinct departement) nb_actions from ( 
    select actionreal, departement
    from militant_action_nutrition 
    where actionreal in (1, 2, 3) 
    union 
    select actionreal, departement 
    from militant_action_jna 
    where actionreal in (1, 2, 3)
) t
group by actionreal

在我所知道的所有数据库中 UNION 运算符实际上会删除重复的条目,因此最终计数应该是您想要的。