Регистрация создает неправильный результат запроса - PullRequest
0 голосов
/ 12 сентября 2018

Когда я делаю сумму и левое объединение в моем запросе, результат больше не является правильным.Это происходит потому, что в одной таблице идентификатор, к которому я присоединяюсь, является более распространенным, как я могу предотвратить неправильную сумму?

У меня есть таблица с именем Norm

ID: 1  LocationID: 1   Norm: 0,22

ID: 1  LocationID: 1   Norm: 0,25

И у меня есть таблица с именем Hour

ID: 1   LocationID: 1

ID: 2   LocationID: 1

ID: 3   LocationID: 1

Запрос:

SELECT N.LocationID, SUM(N.Norm) FROM Norm N

Результат:

LocationID: 1   Sum(N.Norm): 0,47

Запрос:

SELECT N.LocationID, SUM(N.Norm) FROM Norm N LEFT JOIN Hour H ON 
N.LocationID = H.LocationID

Результат:

LocationID: 1 Sum(N.Norm): 1,41

Сценарий:

CREATE TABLE Norm` ( `ID` INT NOT NULL , `LocationID` INTNOT NULL , 
`Norm` DECIMAL(10,2) NOTNULL );

INSERT INTO `Norm`(`ID`, `LocationID`, `Norm`) 
VALUES (1,1, 0.22);

INSERT INTO `Norm`(`ID`, `LocationID`, `Norm`) 
VALUES (2,1, 0.25)


CREATE TABLE `Hour` ( `ID` INT NOT NULL , `LocationID` INTNOT NULL );

INSERT INTO `Hour`(`ID`, `LocationID`) VALUES (1, 1);
INSERT INTO `Hour`(`ID`, `LocationID`) VALUES (2, 1);
INSERT INTO `Hour`(`ID`, `LocationID`) VALUES (3, 1);

Мне нужно объединение, но я хочу, чтобы сумма была правильной, как в первом случае, как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

это будет работать:

SELECT N.LocationID,(select sum(norm) from norm) FROM Norm N LEFT JOIN Hour H ON 
N.LocationID = H.LocationID group by N.LOCATIONID;
0 голосов
/ 12 сентября 2018

вы можете попробовать это

   SELECT N.LocationID
        , SUM(N.Norm) 
     FROM Norm N 
LEFT JOIN (SELECT distinct locationid FROM Hour ) AS H 
       ON N.LocationID = H.LocationID
 GROUP BY N.LocationID
...