php - MySQL(或 PHP?)按字段数据对结果进行分组

标签 php mysql group-by

我有一个类似于此的 MySQL 数据库:

ID    Group   Name

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

我需要在如下所示的 html 表中对结果进行排序:

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

我不知道这应该用 SQL 查询(concat_group 或类似的东西)还是用 PHP 来完成,有人可以帮我吗?

伙计们,感谢下面的帮助,但我也需要完成类似的事情,就像这样:

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

我需要像上面的例子一样排序/显示,像这样:

group       name
-----------------------
  1         John
            Andrea
            Jack
-----------------------
  2         Mike
            Kurt
-----------------------
  3         Alice
-----------------------

现在我的问题有了新的维度。我的数据库看起来像:

b.ID    b.meta_key  b.meta_value   a.title   

1       group       1                Title 1
2       group       1                Title 2
3       group       1                Title 3
4       group       2                Title 4
5       group       2                Title 5
6       group       3                Title 6
7       coef        6                Title 1
8       coef        4                Title 2
9       coef        12               Title 3
9       coef        2                Title 4
9       coef        3                Title 5
9       coef        7                Title 6

(我正在处理表格)

我需要实现:

group       title         coef
---------------------------------
  1         Title 1        6 
            Title 2        2
            Title 3        12
--------------------------------
  2         Title 4        2
            Title 5        3
--------------------------------
  3         Title 6        7
--------------------------------

¿这甚至可能吗?

最佳答案

这是我的解决方案,虽然一点也不优雅

<?php
$dbc = new MySQLI(DBHOST,DBUSER,DBPASS,DB);
$result = $dbc->query("
SELECT
p.Group as 'group',
GROUP_CONCAT(name) as names
FROM prueba p
GROUP BY p.Group
");
?>
<table>
<tr>
    <th>Group</th>
    <th>Name</th>
</tr>
<?php while($row = $result->fetch_assoc()){
    $names = split(",",$row["names"]);
?>
    <tr>
        <td><?php echo $row["group"] ?> </td>
        <td><?php echo $names[0]; array_shift($names) ?></td>
    </tr>
    <?php foreach( $names as $name){ ?>
        <tr>
            <td></td>
            <td><?php echo $name ?></td>
        </tr>
    <?php } ?>
<?php } ?>
</table>

关于php - MySQL(或 PHP?)按字段数据对结果进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3638952/

相关文章:

javascript - PHP、MySQL、HTML/CSS 和 javascript - While 循环和带有模态框弹出窗口的按钮

mysql - 分组前对数据进行排序

mysql - SQL 分组依据 : Get values of 'max' record

php - 1 个查询可以更改表中 2 个条目的相同字段吗?

database - Mysql慢查询: JOIN + multiple WHERES + ORDER BY

group-by - 如何按列分组?

php - 多个表的 WHERE 条件

php - 我可以在 adobe AIR 桌面应用程序中集成支付网关吗?

php - MySQL 查询从数据库中选择一个值等于两个不同事物之一的记录

php - 无法使密码加密工作 PHP