Problème :
Vous disposez d'une table contenant des données à plusieurs dimensions et vous souhaitez créer un tableau croisé (tableau croisé dynamique) de manière dynamique sans connaître au préalable le nombre de dimensions.
Solution :
Le nombre de colonnes pour une requête pivot doit être défini au moment de la préparation de la requête. Pour réaliser une tabulation croisée dynamique, vous disposez de deux options qui impliquent l'écriture de code d'application :
Option 1 : interroger des valeurs distinctes et construire du SQL dynamique
Exemple :
<code class="php">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`";</code>
Option 2 : Interroger et post-traiter les données ligne par ligne
Exemple :
<code class="php">$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"]; }</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!