Я новичок в SQL и занимаюсь разработкой системы отслеживания запасов для дополнительного бизнеса. Я разработал его с использованием PHP, MySQL и HTML. Я разработал несколько функций, которые позволят мне делать некоторые изящные вещи. Я застрял, пытаясь понять, как рассчитать цену единицы, состоящей из нескольких компонентов, после ее сборки.
В настоящее время у меня есть 2 таблицы, которые, как я надеялся, помогут мне определить окончательную цену.
Material_Inventory
PRODUCT_ID (PK) | Quantity | Last Entry
Эта таблица помогает мне отслеживать количество каждого компонента на складе и отслеживает время последнего добавления продукта
Orders
Order_ID | Product_ID | Item_quantity | Unit_price
Эта таблица помогает мне отслеживать цену за единицу каждого компонента в заказе. Я такой же «на заказ», потому что цена компонента может отличаться от заказа к заказу.
При попытке вычислить цену окончательно построенной единицы (компонент a + компонент b + компонент c). Мне трудно понять, как рассчитать окончательную цену. Это проблема, с которой я сталкиваюсь:
Любые предложения или любые отзывы очень приветствуются.
Большое вам спасибо за ваше время!
ура
Вы имели в виду цену товара как методы FIFO («Первый пришел — первый вышел») или «Средняя»? Вот как вы можете рассчитать цену продукта для среднего метода:
select x.product_id, (x.total_price / x.total_quantity) as average_price
(
Select a.product_id as product_id,
sum(b.item_quantity) as total_quantity,
sum(b.unit_price*item_quantity) as total_price
from material_inventory as a inner join orders as b
on a.product_id = b.product.id
group by a.product_id
) as x
Я бы выложил свой стол вот так …
Таблица products
:
id | name | type | current_price
Таблица orders
:
id | user_id | submitted
Таблица order_items
:
id | order_id | product_id | locked_in_price | quantity
Настроить таким образом, вы можете установить locked_in_price
к продукту current_price
когда он впервые добавлен в корзину. Затем, чтобы получить ваши предметы и общее количество, вы бы сделали это …
SELECT *, SUM(locked_in_price * quantity) AS total FROM order_items WHERE order_id = 1;