當處理特定列中具有未知數量值的表時(例如提供的範例中的「way」),建立MySQL中的交叉表似乎是一個挑戰。傳統方法需要在查詢時指定列名,這在動態情況下可能不可行。
為了解決這個挑戰,可以採用兩種程式解決方案:
此方法涉及取得具有不確定計數的列的不同值。使用此值列表,您可以建立動態資料透視查詢並將必要的列附加到 SELECT 語句中。
<code class="sql">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`";</code>
此替代方法涉及按資料庫中的結構逐行查詢資料。您將收集數組中的數據,然後將其轉換為列,然後再顯示。
<code class="php">$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"]; }</code>
兩種方法都需要編碼以適應列數未知的動態情況。方法的選擇將取決於具體的資料操作要求和效率考量。
以上是當列值未知時如何在 MySQL 中建立動態交叉表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!