Cuando se trata de una tabla con un número desconocido de valores en una columna particular (como "way" en el ejemplo proporcionado), crear una tabulación cruzada en MySQL puede parecer un desafío. El enfoque convencional requiere que usted especifique los nombres de las columnas al momento de realizar la consulta, lo que puede no ser factible en situaciones dinámicas.
Para abordar este desafío, se pueden emplear dos soluciones programáticas :
Este enfoque implica recuperar los valores distintos de la columna con recuentos inciertos. Usando esta lista de valores, puede construir una consulta dinámica dinámica y agregar las columnas necesarias a su instrucción 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 implica consultar los datos fila por fila tal como están estructurados en su base de datos. Recopilará los datos en una matriz y luego los dividirá en columnas antes de mostrarlos.
$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"];
}
Ambos enfoques requieren codificación para adaptarse a situaciones dinámicas donde se desconoce el número de columnas. La elección del enfoque dependerá de los requisitos específicos de manipulación de datos y de las consideraciones de eficiencia.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3