Я попытался найти этот форум для ответа, но не могу найти его.Mysql вычесть из другой таблицы
Моя проблема: у меня есть 3 стола. Один с товарами, один с входящими поставками и один с исходящими поставками.
Таблица называется пунктов:
id | item_name
----------------
1 | Bike
2 | Helmet
3 | Pedal
4 | Light
Таблица называется вновь прибывающий:
id | item_id | quantity
-----------------------
1 | 2 | 5
2 | 3 | 2
3 | 4 | 1
4 | 1 | 5
5 | 2 | 4
6 | 1 | 6
7 | 3 | 5
Таблица называется исходящее:
id | item_id | quantity
-----------------------
1 | 3 | 2
2 | 1 | 1
3 | 2 | 3
4 | 3 | 4
5 | 1 | 2
6 | 2 | 1
7 | 4 | 1
То, что я хочу сделать, это получить общее количество в наличии на вычитая исходящие поставки из очереди и упорядочивая их по наименьшей сумме.
Возможно, есть лучший способ сделать это?
Это запрос, который я получил, но суммы SUM не верны. Может кто-нибудь помочь мне и объяснить, почему суммы СУММ не верны и как я могу решить это наилучшим образом?
SELECT items.id AS ID,
items.item_name,
Sum(ingoing.quantity) - Sum(outgoing.quantity) AS InStock
FROM items
LEFT JOIN ingoing
ON ingoing.item_id = items.id
LEFT JOIN outgoing
ON outgoing.item_id = items.id
GROUP BY ID
ORDER BY InStock ASC
Это результат я хочу от этого:
ID | item_name | InStock
---------------------------
4 | Light | 0
3 | Pedal | 1
2 | Helmet | 5
1 | Bike | 8
Что я получаю:
ID | item_name | InStock
---------------------------
4 | Light | 0
3 | Pedal | 2
2 | Helmet | 10
1 | Bike | 16
Если вам нравится, рассмотрите следующий простой двухэтапный курс действий: 1.Если вы еще этого не сделали, предоставьте правильные инструкции CREATE и INSERT (и/или sqlfiddle), чтобы мы могли легче реплицировать проблему. 2. Если вы еще этого не сделали, укажите желаемый результирующий набор, соответствующий информации, представленной на шаге 1. – Strawberry
Просьба предоставить данные теста, которые существуют в текущих таблицах. –
Просьба указать, какие данные вы получаете? –