MySQL,PHP和多个表

时间:2012-11-25 03:30:37

标签: php mysql

我试图从一个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,然后从该行中提取数据。

1 个答案:

答案 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个关于联接的页面)以获得完整的理解。