複数のテーブルで特定の条件のレコード数を返す必要があります
select count(*) c from table1
where exists (select * from crosstable where crosstable.refid = table1.id)
and crosstable.year = 2014
union
select count(*) c from table2
where exists (select * from crosstable where crosstable.refid = table2.id)
and crosstable.year = 2014
union
select count(*) c from table3
where exists (select * from crosstable where crosstable.refid = table3.id)
and crosstable.year = 2014
これにより、テーブルから一意の整数値の結果セットが返されます。
したがって、table1 が '1' を返し、table2 が table3 が '5' を返す場合、'1'、'5'、'5' の代わりに '1'、'5' を取得します。
また、実行するのにうまくいかないようです
select sum(c) from (previous query))
sysdummy テーブルを使用してみましたが、構文の quiet がうまくいかず、この問題の良い例が見つかりません。私はそれを完全に間違って処理している可能性があります..
最後に、結果を 1 つの数値にする必要があります。これは、ユニオン パーツ内の各サブクエリの数です。