Lorsque vous traitez une table avec un nombre inconnu de valeurs dans une colonne particulière (comme "way" dans l'exemple fourni), créant une tabulation croisée dans MySQL peut sembler un défi. L'approche conventionnelle vous oblige à spécifier les noms de colonnes au moment de l'interrogation, ce qui peut ne pas être réalisable dans des situations dynamiques.
Pour relever ce défi, deux solutions programmatiques peuvent être utilisées :
Cette approche consiste à récupérer les valeurs distinctes de la colonne avec des nombres incertains. À l'aide de cette liste de valeurs, vous pouvez construire une requête pivot dynamique et ajouter les colonnes nécessaires à votre instruction 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`";
Cette méthode alternative consiste à interroger les données ligne par ligne telles qu'elles sont structurées dans votre base de données. Vous collecterez les données dans un tableau, puis les pivoterez en colonnes avant de les afficher.
$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"];
}
Les deux approches nécessitent un codage pour s'adapter aux situations dynamiques où le nombre de colonnes est inconnu. Le choix de l'approche dépendra des exigences spécifiques de manipulation des données et des considérations d'efficacité.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3