Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menghimpunkan Keputusan MySQL mengikut Pelbagai Medan dan Paparan Data Berkaitan?

Bagaimanakah Saya Boleh Menghimpunkan Keputusan MySQL mengikut Pelbagai Medan dan Paparan Data Berkaitan?

Patricia Arquette
Patricia Arquetteasal
2024-11-06 12:50:03995semak imbas

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

Hasil Kumpulan MySQL mengikut Data Medan: Meneroka Penyelesaian untuk Manipulasi Data Kompleks

Dalam artikel ini, kami menyelidiki cabaran mengumpulkan dan memaparkan hasil daripada pangkalan data MySQL berdasarkan data medan tertentu. Khususnya, kami berhasrat untuk menangani senario di mana pangkalan data adalah serupa dengan ini:

ID    Group   Name

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

Masalah Asal: Pengumpulan Mengikut Medan Tunggal

Keperluan awal adalah untuk mempersembahkan data dalam format jadual, mengumpulkan mengikut medan "Kumpulan":

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

Penyelesaian:

  • Pertanyaan MySQL: Menggunakan fungsi GROUP_CONCAT, kita boleh menggabungkan nilai unik daripada medan "Nama" untuk setiap nilai "Kumpulan" unik:
<code class="sql">SELECT
p.Group as 'group',
GROUP_CONCAT(name) as names
FROM prueba p
GROUP BY p.Group</code>
  • Pelaksanaan PHP: Untuk memaparkan keputusan dalam jadual HTML, kami boleh mendapatkan semula data daripada pertanyaan dan memprosesnya menggunakan 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>

Masalah Lanjutan: Pengumpulan Mengikut Pelbagai Medan

Masalah menjadi lebih kompleks apabila kami memperkenalkan berbilang medan untuk pengumpulan, bersama-sama dengan data tambahan yang dikaitkan dengan setiap kumpulan. Sebagai contoh, pertimbangkan pangkalan data berikut:

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghimpunkan Keputusan MySQL mengikut Pelbagai Medan dan Paparan Data Berkaitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn