My SQL - COUNT поле на множественной группе другим полем - PullRequest
0 голосов
/ 10 декабря 2018

Я пропустил создание правильного запроса.

Мой запрос:

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 таблицах.

В militaryant_action_nutrition у меня есть
"Bas-Rhin" и "Manche" для actionreal = 1, "Bas-Rhin" и "Manche" для actionreal = 2.

Вilitant_action_jna у меня
"Bas-Rhin "," Manche "и" Yonne "для actionreal = 1," Bas-Rhin "и" Manche "для actionreal = 2.

Мой результат запроса:

1 | 5
2 | 2

Но мне нужен результат:

1 | 3
2 | 2

Спасибо за помощь.

1 Ответ

0 голосов
/ 10 декабря 2018

Сначала выполните объединение, а затем сгруппируйте по:

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 фактически удалит дублирующиеся записи, поэтому итоговое число должно быть таким, как вы хотите.

...