Я создал базу данных (продуктовый магазин и рецепты продуктов питания) для школьного проекта, и у меня возникла проблема с присоединением к таблицам. У меня есть следующие таблицы:
Продукт (Product_ID, Product_Description): группы продуктов (спагетти, картофель, ..)
ProductPackages (Package_ID, Product_ID, Package_Description, Package_content, Package_Measurement): спагетти продается в разных упаковках 500 г, 250 г, 1 кг, ...
PackageShop: (PackageShop_ID, Shop_ID, Package_ID, цена, измерение): один и тот же товар продается в разных магазинах, но с разными ценами
Рецепт (Recipe_ID, Recipe_Description)
RecipeProduct (RecipeProduct_ID, Recipe_ID, Product_ID, Recipe_Qty, Recipe_Measurement)
Что я хочу достичь, это получить самую низкую возможную цену для каждой группы продуктов, а затем Рассчитать стоимость рецепта. Я создал 3 разных запроса: первый запрос для получения самой дешевой цены для каждой группы продуктов, запрос для получения ингредиентов рецепта, запрос для расчета стоимости рецепта
Я пытаюсь присоединиться эти 3 запроса, но мне не удалось это сделать. Запрос для получения самой низкой цены:
select a.Product_ID, a.Product_Description, min(c.Price) as Lowest_Price
from Product as a
inner join ProductPackages as b
on a.Product_ID = b.Product_ID
inner join PackageShop as c
on b.Package_id=c.Package_id
group by a.Product_ID, a.Product_Description
Запрос для получения ингредиентов рецептов:
select a.Recipe_ID, a.Recept_Description, b.RecipeProduct_ID, c.Product_Description,b.Recipe_Qty,
d.Package_Description, d.Package_Content, d.Package_Measurement, e.Price, e.Measurement, (b.Recipe_Qty * e.Price) as recipe_cost
from Recipe as a
inner join RecipeProduct as b
on a.Recept_ID = b.Recept_ID
inner join Product as c
on b.Product_ID=C.Product_ID
inner join ProductPackages as d
on c.Product_ID = d.Product_ID
inner join PackageShop as e
on d.Package_ID=e.Package_ID
Запрос для расчета общей стоимости рецепта:
select a.Recipe_ID, a.Recept_Description, sum(b.Recipe_Qty * e.Price) as total_cost
from Recipe as a
inner join RecipeProduct as b
on a.Recept_ID = b.Recept_ID
inner join Product as c
on b.Product_ID=C.Product_ID
inner join ProductPackages as d
on c.Product_ID = d.Product_ID
inner join PackageShop as e
on d.Package_ID=e.Package_ID
where a.recipe_id=1
Для вашего сведения, на данный момент в базе данных указаны только цены одного магазина. Поэтому нет необходимости использовать shop_id
в запросе.
Для достижения цели, то есть для получения общей стоимости рецепта, мне нужно: написать запрос, который даст мне самую дешевую версию каждого продукта. Запрос должен быть объединен как подмножество в запросе с ингредиентом. Затем этот запрос необходимо объединить с запросом, который рассчитает стоимость.
Я использую SQL Сервер.
Но так как я довольно плохо знаком с SQL сервером, я не могу понять, как это сделать.
Может кто-нибудь поможет мне в этом?