mysql - 任何人都可以在我的 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
我不知道如何开始。感谢您的帮助。
解决方案
我会查询每个产品库存中的最低成分除以生产它所需的成分:
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
推荐阅读
- ios - 如何比较具有两个不同计数值的两个字典以检查 pk 并更新主字典并在表重新加载时检索
- c# - Kofax TotalAgility 将 PDF 文档发送到作业队列 (KTA)
- javascript - 如何组合来自两个不同来源的过滤器并在javascript中作为一个单独的返回?
- mongodb - 如何向我的开发人员授予服务器访问权限?
- java - Java从文件或文件路径获取类
- macos - CoreAudio:Mac 从睡眠中醒来后噼啪作响
- android - 更改菜单项颜色
- mysql - SQL 选择:如何只为 1 列设置别名,而其余的列不使用别名
- augmented-reality - 如何在 ARCore 中使用 POSE?
- github - 是否可以在公共 git 存储库中提出机密问题?