我是初学者,我遇到了问题,我有一张桌子,里面有关于餐馆的大量数据,我有一些餐馆有多个分店,所以我想像下面那样展示它们,你可以看到我我的餐桌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
答案 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'];
}