次のMySQLクエリがあります。
USE demo;
SELECT
loc.name,
sum(case cr_sex when 'F' then 1 else 0 end) as 'F#',
sum(case cr_sex when 'M' then 1 else 0 end) as 'M#'
FROM case_report_main as cr
JOIN location as loc on cr.cr_name = loc.name
GROUP BY loc.name
これは私が望むように機能し、各性別の各出現をカウントし、場所の名前でグループ化します。しかし、私がそれを別のテーブルと結合しようとすると
USE demo;
SELECT
loc.name,
sum(case cr_sex when 'F' then 1 else 0 end) as 'F#',
sum(case cr_sex when 'M' then 1 else 0 end) as 'M#'
FROM case_report_main as cr
JOIN location as loc on cr.cr_name=loc.name
JOIN map_polygons as mp on mp.polygon_name=loc.name
GROUP BY loc.name
値は完全に台無しになり、予想される数十から数百ではなく数千を返します。
問題は理解できたと思います。テーブルを追加すると行数が増えます。しかし、これを修正する方法や、これが実際に問題であるかどうかはわかりません。