ホームページ >データベース >mysql チュートリアル >列が不明な場合に MySQL でデータを動的にピボットする方法

列が不明な場合に MySQL でデータを動的にピボットする方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 23:12:30488ブラウズ

How to Dynamically Pivot Data in MySQL When Columns Are Unknown?

MySQL 動的クロス集計

クロス集計クエリの列数が不明なシナリオでは、従来の MySQL クロス集計ソリューション不足する可能性があります。この記事では、この課題に取り組むための 2 つのアプローチについて説明します。

1.動的クエリ構築

このメソッドには、未知の列 (ウェイなど) の個別の値をフェッチし、適切な数の列を含むクエリを動的に構築することが含まれます。

$pdo->query("SELECT DISTINCT `way` FROM `MyTable`");
foreach ($rows 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`";

これこのアプローチでは、クエリを動的に構築するために追加のアプリケーション コードが必要ですが、複雑な SQL ステートメントが回避され、可変数の列をより柔軟に処理できます。

2.行ごとのピボット

または、データを行ごとにクエリし、アプリケーション コードでピボットを実行することもできます。

$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"];
}

このアプローチには、より多くの後処理が含まれます。アプリケーション内で使用できますが、データのピボット方法をより柔軟に行うことができます。

以上が列が不明な場合に MySQL でデータを動的にピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。