Tablage croisé MySQL dynamique avec colonnes inconnues
Dans MySQL, les requêtes croisées traditionnelles nécessitent de corriger le nombre et les noms des colonnes lors de la préparation de la requête . Cependant, lorsque le nombre de colonnes est inconnu, comme dans le cas des requêtes croisées dynamiques, différentes approches sont nécessaires.
Il existe deux solutions principales qui impliquent l'écriture du code d'application :
1. Interrogez des valeurs distinctes et construisez la requête :
Exemple :
<code class="php">foreach ($pdo->query("SELECT DISTINCT `way` FROM `MyTable`") as $row) { $way_array[] = "MAX(IF(`way`=$way, `time`)) AS way_$way"; } $pivotsql = "SELECT stop, " . join(",", $way_array) . " FROM `MyTable` GROUP BY `stop`";</code>
2. Interrogez ligne par ligne et pivot dans le code :
<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!