MySQL несколько левых объединяются группой - PullRequest
0 голосов
/ 02 сентября 2011

Что-то не так с этим кодом MySQL. Похоже, он возвращает больше акций, чем должно быть.

таблица позиций содержит доступный запас (несколько позиций на один продукт) таблица orderbody содержит заказы на заказанные товары (1 заголовок заказа на много заказов)

SELECT PRO.ProductID, 
       PRO.ProductCode, 
       SUM( POS.Qty ) AS instock, 
       SUM( OB.Qty ) AS onorder
FROM products AS PRO
LEFT JOIN position AS POS ON POS.ProductID = PRO.ProductID
LEFT JOIN orderbody AS OB ON OB.ProductID = PRO.ProductID
WHERE POS.ProductID = OB.ProductID
GROUP BY PRO.ProductID, POS.ProductID, OB.ProductID
  • Я получаю товар на складе 320
  • фактический запас = 40
  • количество позиций = 2 (кол-во 20 каждая)

  • заказ = 16 кол-во

  • фактический номер тела заказа = 8 строк
  • на самом деле на порядок = 8 (каждый с qty = 1)

это на одном из продуктов

Я знаю, что это как-то связано с группой, но я не могу разобраться.

Цените любую полученную помощь.

Ответы [ 2 ]

0 голосов
/ 02 сентября 2011

У меня была такая же проблема несколько дней назад. Попробуйте это, выбрав из отдельного запроса: SELECT ... FROM products, (SELECT ...) ... ", где у вас есть две таблицы, которые нужно оставить объединенными. Попробуйте сначала протестировать подзапрос самостоятельно, и попробуйте собрать его, как только это не сработает. (как только у вас есть нужные данные, а не дубликаты, потому что это ваша проблема.

0 голосов
/ 02 сентября 2011

вы выбираете это поле PRO.ProductCode, но не группируете его, возможно, проблема в этом.

...