"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como criar uma tabulação cruzada dinâmica no MySQL quando os valores das colunas são desconhecidos?

Como criar uma tabulação cruzada dinâmica no MySQL quando os valores das colunas são desconhecidos?

Publicado em 2024-11-08
Navegar:395

How to Create a Dynamic Cross Tabulation in MySQL When Column Values are Unknown?

Tabulação cruzada dinâmica no MySQL

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.

Abordagens de solução

Para enfrentar esse desafio, duas soluções programáticas podem ser empregadas :

1. Consultar valores distintos e construir consulta dinâmica

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`";

2. Consultar linha por linha e pós-processamento dinâmico

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.

Tutorial mais recente Mais>

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