При работе с таблицей с неизвестным количеством значений в определенном столбце (например, «путь» в приведенном примере), создание перекрестная таблица в MySQL может показаться сложной задачей. Традиционный подход требует, чтобы вы указывали имена столбцов во время запроса, что может оказаться невозможным в динамических ситуациях.
Чтобы решить эту проблему, можно использовать два программных решения. :
Этот подход предполагает получение различных значений столбца с неопределенными значениями. Используя этот список значений, вы можете создать динамический сводный запрос и добавить необходимые столбцы в оператор 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`";
Этот альтернативный метод включает в себя запрос данных построчно в том виде, в котором они структурированы в вашей базе данных. Вы соберете данные в массив, а затем разобьете их по столбцам перед отображением.
$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"];
}
Оба подхода требуют написания кода для адаптации к динамическим ситуациям, когда количество столбцов неизвестно. Выбор подхода будет зависеть от конкретных требований к манипулированию данными и соображений эффективности.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3