У меня есть следующий SQL заявление:левое внешнее соединение на нескольких столах
select
a.desc
,sum(bdd.amount)
from t_main c
left outer join t_direct bds on (bds.repid=c.id)
left outer join tm_defination def a on (a.id =bds.sId)
where c.repId=1000000134
group by a.desc;
Когда я запускаю его я получаю следующий результат:
desc amount
NW 12.00
SW 10
Когда я пытаюсь добавить еще один левый внешнее соединение в получить еще один набор значений:
select
a.desc
,sum(bdd.amount)
,sum(i.amt)
from t_main c
left outer join t_direct bds on (bds.repid=c.id)
left outer join tm_defination def a on (a.id =bdd.sId)
left outer join t_ind i on (i.id=c.id)
where c.repId=1000000134
group by a.desc;
Это в основном удваивает поле суммы, как:
desc amount amt
NW 24.00 234.00
SE 20.00 234.00
В то время как результат должен быть:
desc amount amt
NW 12.00 234.00
SE 10.00 NULL
Как это исправить?
Вы используете псевдоним таблицы как bds, а в запросе u используется bdd, что может вызвать проблему. –
Спасибо, я исправил его. Это был тип размещения здесь. –
Проблема, вероятно, связана с тем, что вы группируете поле из 'a', которое является частью левого внешнего соединения. Попробуйте добавить 'c.id' как к части' SELECT', так и к 'GROUP BY'. – GregHNZ