«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как создать динамическую перекрестную таблицу в MySQL, если значения столбцов неизвестны?

Как создать динамическую перекрестную таблицу в MySQL, если значения столбцов неизвестны?

Опубликовано 8 ноября 2024 г.
Просматривать:511

How to Create a Dynamic Cross Tabulation in MySQL When Column Values are Unknown?

Динамическая перекрестная таблица в MySQL

При работе с таблицей с неизвестным количеством значений в определенном столбце (например, «путь» в приведенном примере), создание перекрестная таблица в MySQL может показаться сложной задачей. Традиционный подход требует, чтобы вы указывали имена столбцов во время запроса, что может оказаться невозможным в динамических ситуациях.

Подходы к решению

Чтобы решить эту проблему, можно использовать два программных решения. :

1. Запрос различных значений и создание сводного запроса

Этот подход предполагает получение различных значений столбца с неопределенными значениями. Используя этот список значений, вы можете создать динамический сводный запрос и добавить необходимые столбцы в оператор 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`";

2. Запрос построчно и пост-процесс сводки

Этот альтернативный метод включает в себя запрос данных построчно в том виде, в котором они структурированы в вашей базе данных. Вы соберете данные в массив, а затем разобьете их по столбцам перед отображением.

$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