いくつかの提案:
seasons
に参加する 一度。結合により、左側のテーブルの行が複製されるため、sum
で2回合計できます。 集計。疑わしい場合は、group by
なしでクエリを実行してください 学校の例です。- サブクエリを
inner_schools.id = outer_schools.id
のような外部クエリに関連付ける必要があります - しかし、私が見る限り、サブクエリはまったく必要ありません
例:
SELECT schools.*
, sum(cashflows.amount) total_branding_cashflow
FROM schools
JOIN seasons
ON seasons.school_id = schools.id
and seasons.year = 2010
JOIN cashflows
ON cashflows.season_id = seasons.id
and cashflow_group_id = 12
GROUP BY
schools.id
HAVING total_branding_cashflow BETWEEN 50000000 AND 100000000
複数のカテゴリの場合、ケースを使用できます:
SELECT schools.*
, sum(case when cashflow_group_id = 1 then cashflows.amount end) total1
, sum(case when cashflow_group_id = 12 then cashflows.amount end) total12
FROM schools
JOIN seasons
ON seasons.school_id = schools.id
and seasons.year = 2010
JOIN cashflows
ON cashflows.season_id = seasons.id
GROUP BY
schools.id