ホームページ  >  記事  >  データベース  >  MySQL の結果を複数のフィールドでグループ化し、関連するデータを表示するにはどうすればよいですか?

MySQL の結果を複数のフィールドでグループ化し、関連するデータを表示するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-06 12:50:03928ブラウズ

How Can I Group MySQL Results by Multiple Fields and Display Associated Data?

フィールド データ別の MySQL グループ結果: 複雑なデータ操作のソリューションの探索

この記事では、グループ化と表示の課題を詳しく掘り下げます。特定のフィールド データに基づいた MySQL データベースからの結果。具体的には、データベースが次のようなシナリオに対処することを目指しています。

ID    Group   Name

1       1       John
2       1       Andrea
3       1       Jack
4       2       Mike
5       2       Kurt
6       3       Alice

元の問題: 単一フィールドによるグループ化

最初の要件は次のとおりです。データを表形式で表示し、「グループ」フィールドでグループ化します:

Group       Name
-----------------------
  1         John
            Andrea
            Jack
-----------------------
  2         Mike
            Kurt
-----------------------
  3         Alice
-----------------------

ソリューション:

  • MySQL クエリ: GROUP_CONCAT 関数を使用すると、一意の「グループ」値ごとに「名前」フィールドの一意の値を連結できます:
<code class="sql">SELECT
p.Group as 'group',
GROUP_CONCAT(name) as names
FROM prueba p
GROUP BY p.Group</code>
  • PHP 実装:結果を HTML テーブルに表示するには、クエリからデータを取得し、PHP を使用して処理します。
<code class="php">$result = $dbc->query("
SELECT
p.Group as 'group',
GROUP_CONCAT(name) as names
FROM prueba p
GROUP BY p.Group
");

echo "<table border='1'><tr><th>Group</th><th>Name</th></tr>";
while($row = $result->fetch_assoc()){
    $names = split(",",$row["names"]);
    echo "<tr><td rowspan='".count($names)."'>".$row["group"]."</td><td>".$names[0]."</td></tr>";
    array_shift($names);
    foreach($names as $name){
        echo "<tr><td> </td><td>".$name."</td></tr>";
    }
}
echo "</table>";</code>

高度な問題: 複数のフィールドによるグループ化

グループ化に複数のフィールドを導入し、各グループに関連付けられた追加データを導入すると、問題はさらに複雑になります。たとえば、次のデータベースについて考えてみましょう:

ID    meta_key  meta_value   name

1       group     1          John
2       group     1          Andrea
3       group     1          Jack
4       group     2          Mike
5       group     2          Kurt
6       group     3          Alice

以上がMySQL の結果を複数のフィールドでグループ化し、関連するデータを表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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