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