Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL从多个表中选择_Php_Mysql_Sql - Fatal编程技术网

Php MySQL从多个表中选择

Php MySQL从多个表中选择,php,mysql,sql,Php,Mysql,Sql,我是MySQL新手。我正在用PHP创建一个签出页面。当用户选择他们想要购买的商品并单击“添加到购物车”时,将创建一个临时表,其中包含以下字段(表名为temp): 我只是插入到Item_ID字段,该字段包含他们购买的每个商品的ID(我用商品ID填充表单)。我要做的是查找存储在库存表中的商品名称和价格。这看起来是这样的: +--------------+----------------+------+-----+-------------------+----------------+ | Fiel

我是MySQL新手。我正在用PHP创建一个签出页面。当用户选择他们想要购买的商品并单击“添加到购物车”时,将创建一个临时表,其中包含以下字段(表名为temp):

我只是插入到Item_ID字段,该字段包含他们购买的每个商品的ID(我用商品ID填充表单)。我要做的是查找存储在库存表中的商品名称和价格。这看起来是这样的:

+--------------+----------------+------+-----+-------------------+----------------+
| 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