」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 當列值未知時如何在 MySQL 中建立動態交叉表?

當列值未知時如何在 MySQL 中建立動態交叉表?

發佈於2024-11-08
瀏覽:845

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

MySQL 中的動態交叉表

當處理特定列中具有未知數量值的表時(如提供的範例中的「way」),建立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