我试图从一个mysql表中获取一个值数组,然后在另一个表中搜索这些值并从中提取数据。想象一下两个表:订单表(id,product_id)和产品表(id,price)。我基本上试图使用一个完整的orders.id数组来对数组中的那些id的products.price进行求和。
我已经想出如何使用
在PHP中使用orders.id来获取数组 $results = mysql_query("SELECT id FROM orders WHERE some_value =" . $passed_value . "");
while ($row = mysql_fetch_row($results))
{
$results_array[] = $row[0];
}
所以问题是,现在我有了那个数组,如何使用它来搜索另一个表中的数组中的任何id,然后从该行中提取数据。
答案 0 :(得分:2)
您可以使用$results_array
获取产品ID,然后执行其他查询,例如您使用$results_array['product_id']
执行的查询。
然而,这是非常低效的。正确的方法是执行SQL连接或简单的联合查询,如下所示:
SELECT orders.id, orders.product_id, products.price
FROM orders, products
WHERE orders.id = '" . $your_order_id . "' and products.id = orders.product_id
结果行将包含两个表所需的所有信息。
更新:更多信息
当使用Where
子句隐式连接时,它实际上是内连接。即,当两个表中至少有一个匹配时,它返回行。另一方面,左连接返回第一个表中的所有行,即使第二个表中没有匹配的行(在这种情况下,您获得与第二个表相对应的相应字段为null)。
因此,而不是性能(更多地取决于您在字段中使用的索引,尽管连接类型可能会产生一些影响),您选择的内容取决于您希望得到的结果。您可能希望查看here(确保您已阅读连续5个关于联接的页面)以获得完整的理解。