Я новичок в области компьютеров и работаю над SQL. Я использую несколько запросов на соединение в PostgreSql. Я пытаюсь сделать систему управления запасами. У меня есть 3 таблицы следующим образом:
- inventory_limit_stock: id (int, PK), inventory_id (varchar), product_id (int), min_stock_limit (int)
- product_inventory: идентификатор (int, PK), инвентаризационный_ид (int), product_id (int), in_stock (int)
- other_inventory: id (int, PK), product_id, A (int), B (int), C (int)
Итак, я хочу показать список товаров, которых на складе меньше, чем минимальный лимит, установленный в Таблице 1. inventory_id
в Таблице 1 содержит значение либо в цифрах, либо в «A», «B», «C». Если это число, оно относится к Таблице 2, иначе относится к Таблице 1. Так, например, если inventory_id
Таблицы 1 содержит значение 2, оно проверит в Таблице 2 и получит значение in_stock
. Хотя, если оно содержит значение «A», оно ссылается на таблицу 3 со столбцом A
, и значение в нем будет принято.
Я попробовал следующий запрос, но у меня не получилось.
SELECT ils.product_id as limit_prod, ils.inventory_id as limit_inv from inventory_limit_stock ils
left join product_inventory as pi on pi.product_id = ils.product_id
left join other_inventory oi on oi.product_id = ils.product_id
where (COALESCE(ils.min_stock_limit,0) > COALESCE(SUM(pi.in_stock), SUM(oi.limit_inv), 0)) group by ils.product_id, ils.inventory_id
Я знаю, что в запросе слишком много ошибок, любая помощь будет признательна. Также извините за эту длинную проработку вопроса, это мой первый вопрос, надеюсь, вы все понимаете. Благодаря.
EDIT
Таблица 1 - inventory_limit_stock
id | product_id | inventory_id | min_stock_limit
1 | 121 | 5 | 25
2 | 052 | B | 27
3 | 8 | 13 | 11
4 | 121 | 13 | 35
Таблица 2 - Товарный инвентарь
id | product_id | inventory_id | in_stock
1 | 121 | 5 | 42
2 | 742 | 15 | 12
3 | 8 | 13 | 09
4 | 121 | 13 | 25
Таблица 3 - Другие_инвентарии
id | product_id | A | B | C
1 | 121 | 42 | 12 | 11
2 | 052 | 42 | 25 | 25
Список результатов
(Должен показать список с продуктами in_stock количество <минимальный лимит) </p>
product_id | inventory | minimum_stock_limit | in_stock_available
8 | 13 | 11 | 9
121 | 13 | 35 | 25
052 | B | 27 | 25