Как рассчитать инвентарь используя mysql - PullRequest
0 голосов
/ 31 мая 2018

Я ищу способ расчета количества на складе из двух таблиц.

Записи в моей таблице следующие:

Ниже приведена таблица продуктов

enter image description here

У меня две таблицы: сначала "сток" для покупки акций, а другая - для продажи на складе.

Ниже приведен скриншот для таблицы "Сток"

enter image description here

и вот скриншот для stockoutward

enter image description here

Ниже мойзапрос для расчета запаса

SELECT 
p.Id,
p.Name,
p.UnitPrice,
((SELECT 
        IFNULL(SUM(Quantity), 0)
    FROM
        stockinward
    WHERE
        ProductId = p.Id) - (SELECT 
        IFNULL(SUM(Quantity), 0)
    FROM
        stockoutward
    WHERE
        ProductId = p.Id)) AS Quantity

ОТ продукта p;

enter image description here

Но проблема в запросе выше, когда у меня естьболее 1000 продуктов это занимает более 8 секунд, так есть ли другой способ получить тот же результат через 1 или 2 секунды?

Заранее спасибо:)

1 Ответ

0 голосов
/ 31 мая 2018

Вы также можете использовать соединения вместо подзапросов

SELECT 
p.Id,
p.Name,
p.UnitPrice,
IFNULL(qin.Quantity, 0) - IFNULL(qout.Quantity, 0) AS Quantity
FROM product
LEFT JOIN (
    SELECT ProductId, SUM(Quantity) AS Quantity
    FROM stockinward
    GROUP BY ProductId
) qin ON p.Id = qin.ProductId
LEFT JOIN (
    SELECT ProductId, SUM(Quantity) AS Quantity
    FROM stockoutward
    GROUP BY ProductId
) qout ON p.Id = qout.ProductId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...