Задача запроса - найти самую дешевую цену каждого продукта и рассчитать стоимость рецепта - PullRequest
0 голосов
/ 22 марта 2020

Я создал базу данных (продуктовый магазин и рецепты продуктов питания) для школьного проекта, и у меня возникла проблема с присоединением к таблицам. У меня есть следующие таблицы:

Продукт (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 сервером, я не могу понять, как это сделать.

Может кто-нибудь поможет мне в этом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...