MYSQL GROUP BY RECORD

时间:2014-02-13 07:38:50

标签: 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

问题: 我已经进行了查询,但即使餐厅有多条记录,它也只显示每个餐厅的一个条目。

SELECT * FROM Restaurants
GROUP BY NAME

3 个答案:

答案 0 :(得分:2)

样本数据

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

查询

SELECT 
    resturant,
    GROUP_CONCAT(branch)
FROM Restaurants
GROUP BY NAME

结果

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

在分支

上使用php explode()

答案 1 :(得分:1)

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

或者使用GROUP_CONCAT,这会在列中为您提供逗号分隔的城镇列表。

例如

SELECT ame,some_id,GROUP_CONCAT(branch_town) from my_table GROUP BY NAME

答案 2 :(得分:1)

我会:

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'];
}