Ao lidar com uma tabela com um número desconhecido de valores em uma coluna específica (como "way" no exemplo fornecido), criando uma tabulação cruzada no MySQL pode parecer um desafio. A abordagem convencional exige que você especifique os nomes das colunas no momento da consulta, o que pode não ser viável em situações dinâmicas.
Para enfrentar esse desafio, duas soluções programáticas podem ser empregadas :
Esta abordagem envolve a busca de valores distintos da coluna com contagens incertas. Usando esta lista de valores, você pode construir uma consulta dinâmica dinâmica e anexar as colunas necessárias à sua instrução SELECT.
foreach ($pdo->query("SELECT DISTINCT `way` FROM `MyTable`") as $row) {
$way = (int) $row["way"];
$way_array[] = "MAX(IF(`way`=$way, `time`)) AS way_$way";
}
$pivotsql = "SELECT stop, " . join(", ", $way_array) . "FROM `MyTable` GROUP BY `stop`";
Este método alternativo envolve consultar os dados linha por linha conforme eles são estruturados em seu banco de dados. Você coletará os dados em um array e depois os dividirá em colunas antes de exibi-los.
$stoparray = array();
foreach ($pdo->query("SELECT * FROM `MyTable`") as $row) {
$stopkey = $row["stop"];
if (!array_key_exists($stopkey, $stoparray)) {
$stoparray[$stopkey] = array("stop"=>$stopkey);
}
$waykey = "way_" . $row["way"];
$stoparray[$stopkey][$waykey] = $row["time"];
}
Ambas as abordagens requerem codificação para se adaptar a situações dinâmicas onde o número de colunas é desconhecido. A escolha da abordagem dependerá dos requisitos específicos de manipulação de dados e de considerações de eficiência.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3