Многократные объединения в SQL возвращают слишком много строк - PullRequest
0 голосов
/ 23 сентября 2019

Мне нужно получить сумму поля, которое существует в 4 таблицах, например, в моей основной таблице, используя уникальный идентификатор поля.

Мне нужно объединить мою основную таблицу с 3 дополнительными таблицами, чтобы получить сумму уровнязначения, соединяющиеся по идентификатору соединения.Я пытался использовать левые соединения, но результаты не такие, как ожидалось

select m.ID
, (ISNULL(s.LEVEL,0) + ISNULL(g.LEVEL,0) + ISNULL(p.LEVEL,0)) as 
Sum_Levels from PRIMARYTABLE m
left join SPIPE s on m.JID = s.FJID
left join GPIPE g on m.JID = g.FID
left join PPIPE p on m.JID = p.FJID


PRIMARYTABLE
--------
ID JID
1  A


SPIPE
-----

FJID  LEVEL
A      NULL


PPIPE
-----

FJID  LEVEL
A   2.01


GPIPE
------

FJID  LEVEL
A   1.53


Expected Output
---------------

ID   Sum_Levels
1      3.54

Я ожидал, что количество записей в моих выходных данных будет таким же, как в моей основной таблице, то есть 1,2 миллиона.Вместо этого я получаю более 15 миллионов строк, и выполнение запроса занимает слишком много времени

...