Неверная сумма на столе - PullRequest
0 голосов
/ 30 апреля 2020

Я пишу запрос, но получаю неправильный результат. Вот следующие таблицы:

Tbl1(ProId, price,VId)
Tbl2(ProId, price, VId) 

Я написал этот запрос:

SELECT 
    a.ProId, b.ProId,
    SUM(a.price) - SUM(b.price) AS TotalPro
FROM 
    tbl1 AS a 
INNER JOIN 
    tbl2 AS b ON a.ProId = b.ProId
WHERE 
    a.VId = '1234'
GROUP BY 
    a.ProId, b.ProId; 

Этот запрос возвращает неверный результат. ответ. Что я сделал, так это суммировал цену из таблицы 1 и 2 отдельно и минус их, ответ был в порядке. Но когда я присоединяюсь, я не знаю, почему я получаю неправильный ответ. ProId одинаков в обеих таблицах, значения одинаковы.

1 Ответ

0 голосов
/ 30 апреля 2020

Я думаю, вы хотите что-то вроде этого:

SELECT ProdId, SUM(price)
FROM (
  SELECT a.ProId,a.price
  FROM Tbl1 a
  WHERE a.VId='1234'
  UNION ALL 
  SELECT b.ProdId, -b.price
  FROM Tbl2 b
  --WHERE b.VId ='1234' (?)
 ) sub
GROUP BY ProdId;

Проблема с JOIN состоит в том, что у вас могут быть строки, которые суммируются несколько раз.

...