SELECT文を実行すると、IFNULL部分とSUM CASE部分が2回実行されます。私はそれがステートメントの余りに多くのLEFT JOINと関係があることを知っています。しかし、問題の解決策を見つけることができません。MySQL SELECTが複数回実行される
問題を説明するのは難しいので、私はsqlfiddleリンクを含めました。
SELECT
IFNULL(SUM(d.quantity),0) as dispatch,
SUM(CASE WHEN t.valuefor='alpha' THEN t.quantity ELSE 0 END) as alpha,
SUM(CASE WHEN t.valuefor='beta' THEN t.quantity ELSE 0 END) as beta
FROM conversion as c
LEFT JOIN sale as s ON s.conversionid = c.id
LEFT JOIN dispatch as d ON d.saleid = s.id
LEFT JOIN test as t ON t.conversionid = c.id
電流出力
dispatch alpha beta
1800 1400 80
理想
dispatch alpha beta
600 700 40
あなたの結合がデカルト積を引き起こしています。ジョインを行う前に*集計を行う必要があります。 –
その部分私は、これらの結合ステートメントでなければならないことを理解しています。しかし、問題の解決方法を理解することはできません。 –