Выбор данных из 3 таблиц для расчета уровня запасов - PullRequest
0 голосов
/ 19 декабря 2018

Я сейчас настраиваю систему инвентаризации в phpgrid.У меня 3 таблицы - продукты, заказы, покупки.Я пытаюсь перечислить все поля PartNumber от продуктов и общее количество NumberReceived для каждого PartNumber от покупок, а также общее количество NumberShipped для каждого PartNumber от заказов.

Оттуда, я думаю, я могу использовать phpgridчтобы отобразить виртуальный / вычисленный столбец, который вычтет NumberShipped из NumberReceived и даст мне текущий уровень запасов каждого PartNumber.

Поиск результатов примерно такой:

PartNumber   | Received  | Shipped  | (calculated) Qty On Hand
______________________________________________________________
12345        | 20        |  10      |  10
67890        | 40        |  5       |  35

У меня возникают проблемы, когда я не могу понять, как объединить все воедино, чтобы получить нужные мне данные.Этот SELECT отображает некоторые данные, но не каждый PartNumber с правильными вычислениями.

 "SELECT 
        p.id, 
        sum(p.NumberReceived) AS 'Received', 
        sum(o.NumberShipped) As 'Shipped' 
        FROM purchases p
        INNER JOIN orders o on p.id = o.ProductId
        GROUP BY p.id ", 
    "id", "purchases");

Я понял, что мне нужен столбец PartNumber, чтобы перечислить все данные поля PartNumber.Итак, я попробовал это - я думаю, что я близок, но это продолжает выдавать ошибку - PHPGRID_ERROR: Не удалось выполнить запрос.Ошибка 102

"SELECT 
    prod.id,prod.PartNumber, 
    sum(pur.NumberReceived) AS 'Received', 
    sum(o.NumberShipped) As 'Shipped', 
    FROM products prod
    LEFT JOIN orders o ON prod.PartNumber = o.ProductId
    LEFT JOIN purchases pur ON prod.PartNumber = pur.ProductId", 
"id", "products");

Я надеюсь, что кто-нибудь может помочь мне направить меня в правильном направлении.Спасибо вам всем!

1 Ответ

0 голосов
/ 19 декабря 2018

Если вы суммируете, вам нужно сгруппировать.Следующее должно работать.Если нет, отправьте конкретное сообщение об ошибке.(у вас также была лишняя запятая после последнего элемента в блоке выбора)

SELECT 
    prod.id,prod.PartNumber, 
    sum(pur.NumberReceived) AS Received, 
    sum(o.NumberShipped) As Shipped 
    FROM products prod
    LEFT JOIN orders o ON prod.PartNumber = o.ProductId
    LEFT JOIN purchases pur ON prod.PartNumber = pur.ProductId"
    GROUP BY prod.id, prod.PartNumber;
...