首頁  >  文章  >  資料庫  >  當列值未知時如何在 MySQL 中建立動態交叉表?

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

Susan Sarandon
Susan Sarandon原創
2024-10-28 08:36:29435瀏覽

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

MySQL 中的動態交叉表

當處理特定列中具有未知數量值的表時(例如提供的範例中的「way」),建立MySQL中的交叉表似乎是一個挑戰。傳統方法需要在查詢時指定列名,這在動態情況下可能不可行。

解決方案

為了解決這個挑戰,可以採用兩種程式解決方案:

1。查詢不同值並建構透視查詢

此方法涉及取得具有不確定計數的列的不同值。使用此值列表,您可以建立動態資料透視查詢並將必要的列附加到 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>

2.逐行查詢和透視後處理

此替代方法涉及按資料庫中的結構逐行查詢資料。您將收集數組中的數據,然後將其轉換為列,然後再顯示。

<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn