首頁 >資料庫 >mysql教程 >如何將MySQL結果按多個欄位分組並顯示關聯資料?

如何將MySQL結果按多個欄位分組並顯示關聯資料?

Patricia Arquette
Patricia Arquette原創
2024-11-06 12:50:03995瀏覽

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 查詢: 使用GRO ,我們可以為每個唯一的「群組」值連接「名稱」欄位中的唯一值:
<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn