PHP通过在列中嵌套结果来转换查询[重复]

hfyxw5xn  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(127)

此问题已在此处有答案

MySQL - Rows to Columns(13个回答)
2天前关闭。
我从一个查询中得到以下结果。

我尝试将上述查询的结果转换为:

Parcelas |   A   |    D   |
2        | 65.99 |  47.99 |
3        | 66.19 |  48.19 |
4        | 66.39 |  48.39 |
5        | 66.59 |  48.59 |
...

谁能给予我出个主意怎么做?
我试着用foreach遍历它,检查这个值是否已经存在于一个数组中,以及它是否必须用另一个数组递增。
帮我

kfgdxczn

kfgdxczn1#

在数据库查询中这样做会更容易。但是,如果这不是一个选项,并且您需要在PHP中重新排列数据,那么您可能需要类似于以下模式的内容:

$results = [];
while ($row = $stmt->fetchAssoc()) {
  if (!isset($results[$row['parcelas']])) {
    $results[$row['parcelas']] = [];
  }
  $results[$row['parcelas']][$row['nome']] = $row['cet'];
}

print_r($results);

如果你有权限更改查询,这可能对你有用:

SELECT
  parcelas,
  SUM(IF(tabela.nome = "A", cet, null)) AS A,
  SUM(IF(tabela.nome = "B", cet, null)) AS B
FROM parcela
INNER JOIN tabela ON tabela.id = parcela.tabela_id
WHERE tabela.id IN (1, 4)
GROUP BY parcelas

相关问题