Php MYSQL按记录分组

Php MYSQL按记录分组,php,mysql,sql,Php,Mysql,Sql,我是初学者,我被一个问题困住了,我有一个表,其中有关于餐馆的大量数据,我有一些餐馆有多个分支机构,所以我想如下所示显示它们,正如你所看到的,我的表中有三个关于餐馆C的条目,我想在一个名称下显示它们 Restaurant A: 123 B town Restaurant B: 123 C town Restaurant C: 1 A Town 2 B Town 3 C Town 问题: 我已经做了一个查询,但是它只显示每个餐厅的一个条目,即使有多个针对该餐厅的记录 SELE

我是初学者,我被一个问题困住了,我有一个表,其中有关于餐馆的大量数据,我有一些餐馆有多个分支机构,所以我想如下所示显示它们,正如你所看到的,我的表中有三个关于餐馆C的条目,我想在一个名称下显示它们

Restaurant A:
  123 B town
Restaurant B:
  123 C town
Restaurant C:
  1 A Town
  2 B Town 
  3 C Town
问题: 我已经做了一个查询,但是它只显示每个餐厅的一个条目,即使有多个针对该餐厅的记录

SELECT * FROM Restaurants
GROUP BY NAME

您不希望按名称对它们进行分组,因为该分组将只显示每个组的一行。 获取所有行,然后使用关联数组在PHP中进行分组

或者使用
GROUP\u CONCAT
,这将在一列中为您提供以逗号分隔的城镇列表

例如


按名称从my_表组中选择ame、some_id、GROUP_CONCAT(branch_town)

您不希望按名称对它们进行分组,因为该分组将只显示每个组的一行。 获取所有行,然后使用关联数组在PHP中进行分组

或者使用
GROUP\u CONCAT
,这将在一列中为您提供以逗号分隔的城镇列表

例如

按名称从我的表格组中选择ame、一些id、组CONCAT(分支城市)

我会:

SELECT * FROM Restaurants
ORDER BY NAME
在您的php脚本中,请提醒我,我不知道您的表命名,所以这或多或少是伪代码

$prevGroup = false;
// How ever you normally iterate through your rows
foreach($rows as $row) {
    $group = $row['name'];
    if($prevGroup != $group) {
        echo $row['name'];
        $prevGroup = $group;
    }
    echo $row['city'];
}
我想:

SELECT * FROM Restaurants
ORDER BY NAME
在您的php脚本中,请提醒我,我不知道您的表命名,所以这或多或少是伪代码

$prevGroup = false;
// How ever you normally iterate through your rows
foreach($rows as $row) {
    $group = $row['name'];
    if($prevGroup != $group) {
        echo $row['name'];
        $prevGroup = $group;
    }
    echo $row['city'];
}
样本数据

resturant       |   branch
-----------------------------
Restaurant A    |   123 B town
Restaurant B    |   123 C town
Restaurant C    |   1 A Town
Restaurant C    |   2 B Town 
Restaurant C    |   3 C Town
质疑

结果

resturant       |   branch
-----------------------------
Restaurant A    |   123 B town
Restaurant B    |   123 C town
Restaurant C    |   1 A Town,2 B Town,3 C Town  
在分支上使用php

示例数据

resturant       |   branch
-----------------------------
Restaurant A    |   123 B town
Restaurant B    |   123 C town
Restaurant C    |   1 A Town
Restaurant C    |   2 B Town 
Restaurant C    |   3 C Town
质疑

结果

resturant       |   branch
-----------------------------
Restaurant A    |   123 B town
Restaurant B    |   123 C town
Restaurant C    |   1 A Town,2 B Town,3 C Town  

在分支上使用php

GROUP BY的功能是返回所有匹配值的单个记录。因此,如果您按照一个餐厅名称进行分组,那么它只会为每个餐厅名称返回一条记录。听起来你需要做的就是按顺序排序,只需对我的sql记录排序,但它会显示我想要的内容。如果你只想打印一次名称,那么只在名称更改时打印,但不显示结果的显示方式,我无法向您展示如何将其更改为这样做。GROUP BY的功能是返回所有匹配值的单个记录。因此,如果您按照一个餐厅名称进行分组,那么它只会为每个餐厅名称返回一条记录。听起来你需要做的就是按顺序排序,只需对我的sql记录进行排序,但它会显示我想要的内容。如果你只想打印一次名称,那么只在名称更改时打印它,但如果你不显示结果的显示方式,我无法向你展示如何更改它来执行此操作。