不明な列を含む動的 MySQL クロス集計
MySQL では、従来のクロス集計クエリではクエリの準備中に列の数と名前を修正する必要があります。 。ただし、動的なクロス集計クエリの場合のように、列の数が不明な場合は、別のアプローチが必要になります。
アプリケーション コードの作成を伴う主な解決策は 2 つあります。
1.個別の値のクエリとクエリの構築:
例:
<code class="php">foreach ($pdo->query("SELECT DISTINCT `way` FROM `MyTable`") as $row) { $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 で動的クロス集計クエリを実行できます。柔軟性を実現し、進化するデータ構造に対応します。
以上がMySQL で不明な列名を使用して動的クロスタブ クエリを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。