Когда я запускаю инструкцию SELECT, она запускает часть IFNULL трижды и часть SUM CASE дважды. Я знаю, что это связано со слишком большим количеством ВЛЕВОГО ПРИСОЕДИНЕНИЯ в заявлении. Но не удалось найти решение проблемы.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
Ваши соединения вызывают декартовский продукт. Вам нужно выполнить агрегацию * до *, чтобы сделать соединения. –
Yeh, эта часть, я выясню, что это должны быть эти утверждения соединения. Но не могу понять, как решить проблему. –