ホームページ >データベース >mysql チュートリアル >MySQL で不明な列名を使用して動的クロスタブ クエリを作成する方法

MySQL で不明な列名を使用して動的クロスタブ クエリを作成する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-27 14:07:01968ブラウズ

How to Create Dynamic Cross-Tab Queries in MySQL with Unknown Column Names?

不明な列を含む動的 MySQL クロス集計

MySQL では、従来のクロス集計クエリではクエリの準備中に列の数と名前を修正する必要があります。 。ただし、動的なクロス集計クエリの場合のように、列の数が不明な場合は、別のアプローチが必要になります。

アプリケーション コードの作成を伴う主な解決策は 2 つあります。

1.個別の値のクエリとクエリの構築:

  • 未知の列 (ウェイなど) の個別の値を取得します。
  • 個別の値を結合してピボット クエリを構築します。 SELECT リストの列。
  • 例:

    <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 サイトの他の関連記事を参照してください。

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