首页 > 解决方案 > 任何人都可以在我的 MYSQL 查询中帮助我多对多

问题描述

我有三个表:产品、库存和成分

Product Table    
ID[PK]        Name            Type
1         OrdinaryBurger     Burger
2         CheeseBurger       Burger

Inventory table
ID[PK]    Item_name    Stocks
100       Buns         5
101       Patties      5
103       Cheese       0

Ingredients table
ID[PK]      ProductID[FK]    InventoryID[FK]  Quantity
1001        1                  100            1
1002        1                  101            1
1003        2                  100            1
1004        2                  101            1
1005        2                  103            1

我想创建一个查询,可以显示所有产品的数量,例如:

Products table

Product_name      Number_of_item_it_can_make     
OrdinaryBurger     5
CheeseBurger       0

我不知道如何开始。感谢您的帮助。

标签: mysql

解决方案


我会查询每个产品库存中的最低成分除以生产它所需的成分:

SELECT   p.name, FLOOR(MIN(inv.stocks / ing.quantitiy)) AS num_can_make
FROM     product p
JOIN     ingredients ing ON p.id = ing.productId
JOIN     inventory inv ON ing.inventoryId = inv.id
GROUP BY p.name

推荐阅读