Php MySQL从多个表中选择
我是MySQL新手。我正在用PHP创建一个签出页面。当用户选择他们想要购买的商品并单击“添加到购物车”时,将创建一个临时表,其中包含以下字段(表名为temp): 我只是插入到Item_ID字段,该字段包含他们购买的每个商品的ID(我用商品ID填充表单)。我要做的是查找存储在库存表中的商品名称和价格。这看起来是这样的:Php MySQL从多个表中选择,php,mysql,sql,Php,Mysql,Sql,我是MySQL新手。我正在用PHP创建一个签出页面。当用户选择他们想要购买的商品并单击“添加到购物车”时,将创建一个临时表,其中包含以下字段(表名为temp): 我只是插入到Item_ID字段,该字段包含他们购买的每个商品的ID(我用商品ID填充表单)。我要做的是查找存储在库存表中的商品名称和价格。这看起来是这样的: +--------------+----------------+------+-----+-------------------+----------------+ | Fiel
+--------------+----------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------------+------+-----+-------------------+----------------+
| Inventory_ID | int(11) | NO | PRI | NULL | auto_increment |
| Item_Name | varchar(40) | NO | | | |
| Item_Price | float unsigned | NO | | 0 | |
| Added_On | timestamp | YES | | CURRENT_TIMESTAMP | |
+--------------+----------------+------+-----+-------------------+----------------+
那么,如何根据临时表中的Item_ID字段从库存表中提取Item_name和Item_Price字段,以便在页面上显示?我只是不明白如何表达这个疑问。我非常感谢你的帮助。谢谢。它被称为
JOIN
-阅读更多
据我所知,临时表中的项目ID引用的是库存表中的库存ID。基于此假设,您可以使用以下查询
Select Item_Name, Item_Price from Inventory, Temp where Temp.Item_ID == Inventory.Inventory_ID
我想这就是你想做的
谢谢,就目前而言,您不能(除非库存标识=物品标识)
您需要的是一种将两个表连接在一起的方法。在这种情况下,如果库存ID=物料ID,则可能出现以下情况:
SELECT Item_Name,
Item_Price
FROM InventoryTable
INNER JOIN TempItemTable ON (InventoryTable.Inventory_ID = ItemTable.Item_ID)
如果要筛选特定项,可以添加约束:
WHERE ItemTable.Item_ID = 27 --for example
这将把库存表中的所有行与项目表中的匹配行连接起来
Jeff Atwood(IMO)对联接的工作原理有一个直观的解释。您使用SELECT语句描述要返回的列,使用FROM子句说明从何处获取这些列,还有一个WHERE子句来说明在什么条件下。为什么库存表中没有item_id?正如我所理解的:Inventory_id和item_id是相同的thing@Slava但是库存ID是自动递增的,对吧,你添加的商品库存ID是递增的,当你卖东西的时候,购物车的商品ID是递增的。嘿,这正是我想要的。还有一个问题:我如何得到这个价格的总和。我尝试了这个,但收到了一个错误:从库存中选择SUM(Inventory.Item\u Price),temp其中Inventory.Inventory\u ID=temp.Item\u ID
SELECT Item_Name,
Item_Price
FROM InventoryTable
INNER JOIN TempItemTable ON (InventoryTable.Inventory_ID = ItemTable.Item_ID)
WHERE ItemTable.Item_ID = 27 --for example