私は2つのテーブル:Ambulances
とResponders
を持っています。 Responder
テーブルには1つのcall_sign
カラムがあり、Ambulances
テーブルには4カラム(call_sign_1, call_sign_2, call_sign_3, call_sign_4
)があります。UNION ALLでGROUP BYを使用すると結果がグループ化されない
すべてのcall_signとそれがデータベースに表示される回数(つまり、各レスポンダが通話したコールの数 - 救急車のコール数を含む)を書きたいとします。私が作成したクエリは、いくつかのcall_signを複数回表示します。
私はそれらをグループ化して、各call_signが1回だけ表示されるようにしたいと思います。
SELECT * FROM (
select call_sign as call_sign, count(call_sign) as `call_sign_count` from responders group by call_sign
UNION ALL
select call_sign_1 as call_sign, count(call_sign_1) as `call_sign_count` from ambulances group by call_sign
UNION ALL
select call_sign_2 as call_sign, count(call_sign_2) as `call_sign_count` from ambulances group by call_sign
UNION ALL
select call_sign_3 as call_sign, count(call_sign_3) as `call_sign_count` from ambulances group by call_sign
UNION ALL
select call_sign_4 as call_sign, count(call_sign_4) as `call_sign_count` from ambulances group by call_sign
)
a WHERE call_sign IS NOT NULL Group By call_sign, call_sign_count
databseとクエリは、このフィドルで見つけることができます:
https://www.db-fiddle.com/f/9grxeiA277KtUqsiUbYMA8/0