問題:
您有一個包含多個維度資料的表,並且您想要若要在不預先知道維數的情況下動態建立交叉表(資料透視表)。
解決方案:
必須定義資料透視查詢的列數在查詢準備時。要實現動態交叉表,您有兩個涉及編寫應用程式程式碼的選項:
選項1:查詢不同值並建構動態SQL
範例:
<code class="php">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>
選項2:逐行查詢與後處理資料
使用包含第二維值(例如「way」)作為鍵、時間值作為值的子陣列填入陣列。
產生的陣列將類似於資料透視查詢中的資料。<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中文網其他相關文章!