問題:
複数のディメンションを持つデータを含むテーブルがあり、事前にディメンションの数を知らなくても、クロス集計テーブル (ピボット テーブル) を動的に作成します。
解決策:
ピボット クエリの列の数を定義する必要があります。クエリの準備時に。動的クロス集計を実現するには、アプリケーション コードの記述を伴う 2 つのオプションがあります。
オプション 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: データを行ごとにクエリおよび後処理します
例:
<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 中国語 Web サイトの他の関連記事を参照してください。