Member 12336474 Ответов: 2

Неправильные значения при соединении таблиц


MY tables are

Parent WO

WO     PRICE
1      1790    
1      9    
Child WO

WO     PRICE
1      200    
1      400    
1      600
1      100

What I have tried:

<pre>I am trying to do this

Select  sum(p.price), SUM(c.price) from Parent_WO p
left outer join Child_WO c
on p.WO= c.WO  
group by p.WO
I am getting the wrong value for the p.price. I am getting 7196 when it should by 1796. It's multipe the total of the parent WO with the 4 child WO.

2 Ответов

Рейтинг:
2

Maciej Los

Проверить это:

DECLARE @Parent_WO TABLE(WO INT, PRICE INT)
INSERT INTO @Parent_WO(WO, PRICE)
VALUES(1, 1790),
(1, 9)

DECLARE @Child_WO TABLE(WO INT, PRICE INT)
INSERT INTO @Child_WO(WO, PRICE)
VALUES(1, 200),
(1, 400),
(1, 600),
(1, 100)

SELECT p.WO, p.TotalParent, c.TotalChild
FROM (SELECT WO, SUM(PRICE) AS TotalParent FROM @Parent_WO GROUP BY WO) AS p
INNER JOIN  (SELECT WO, SUM(PRICE) AS TotalChild FROM @Child_WO GROUP BY WO) AS c ON p.WO = c.WO 


Рейтинг:
0

Richard Deeming

Запрос возвращает правильный результат на основе ваших данных.

У тебя есть два родительские строки с WO = 1. Твой JOIN будет соответствовать обоим из них четырем дочерним строкам с помощью WO = 1.

WO    Parent    Child
---------------------
1     1790      200
1     1790      400
1     1790      600
1     1790      100
1     9         200
1     9         400
1     9         600
1     9         100

То GROUP BY затем сгруппирует все восемь строк вместе, давая вам итоговые значения:
WO    Parent    Child
---------------------
1     7196      3900