1

我试图从一个mysql表中获取一组值,然后在另一个表中搜索这些值并从中提取数据。想象两个表:一个订单表(id,product_id)和一个产品表(id,price)。我基本上是在尝试使用一个充满 orders.id 的数组来对数组中这些 id 的 products.price 求和。

我已经想出了如何使用 PHP 在 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,然后从该行中提取数据。

4

1 回答 1

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子句隐式连接时,它实际上是一个内部连接。即,当两个表中至少有一个匹配时,它会返回行。另一方面,左连接会返回第一个表中的所有行,即使第二个表中没有匹配的行(在这种情况下,您会得到与第二个表对应的各个字段为空)。

因此,与性能相比(这更多地取决于您在字段上拥有的索引,尽管连接类型可能会产生一些影响),您选择的内容取决于您想要获得的结果。您可能想查看这里(确保您阅读了有关连接的连续 5 页)以获得全面的理解。

于 2012-11-25T03:36:23.903 回答