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

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

Susan Sarandon
發布: 2024-10-28 08:36:29
原創
527 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板