gpt4 book ai didi

php - MySQL、PHP 和多表

转载 作者:行者123 更新时间:2023-11-29 06:54:33 25 4
gpt4 key购买 nike

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

最佳答案

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

因此,与其选择性能(这更多地取决于您在字段上的索引,尽管连接类型可能会产生一些影响),不如选择什么取决于您想要获得的结果。你可能想看看 here (确保您阅读了有关连接的 5 个连续页面)以获得完整的理解。

关于php - MySQL、PHP 和多表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13548008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com