【问题标题】:Looping through multiple SQL queries循环执行多个 SQL 查询
【发布时间】:2023-09-25 05:46:01
【问题描述】:

我有一张包含数万个订单的 SQL 表,每个订单来自大约 100 家不同的公司。我想在管理网页上对每家公司进行总计。

我是否应该循环并执行 100 个查询(每个公司一个) - 例如“SELECT SUM(order_amount) FROM orders WHERE company = XXX”或执行一个查询以显示所有订单以遍历它们并将每个订单添加到公司的数组键,例如 company_array[company] += order_amount

【问题讨论】:

  • 这有点取决于你的表结构,但我通常会在一个带有GROUP BY modifier 的查询中做这种事情。
  • SQL 是一种基于集合的语言,您很少需要循环。您可以在单个查询中轻松完成此操作,但如果没有您的表和示例数据的详细信息,我们无法向您展示。
  • 谢谢 - GroupBy 看起来就像我需要的一样。

标签: php sql


【解决方案1】:

这样的结构:

companies
--------------
company_id
company_name

orders
--------------
order_id
order_company # Foreign key to companies.company_id
order_amount

您可以像这样执行一个独特的 SQL 请求:

SELECT ALL company_name, SUM(order_amount) AS company_amount
FROM orders INNER JOIN companies ON order_company = company_id
GROUP BY company_name

使用 PHP :

$sql = <<<SQL
    SELECT ALL company_name, SUM(order_amount) AS company_amount
    FROM orders INNER JOIN companies ON order_company = company_id
    GROUP BY company_name
    SQL;
$result = $pdo->query($sql)->fetchAll();
// Now you can loop $result
print_r($result);

【讨论】: