我到处寻找这个问题的答案,但我发现的一切似乎都太复杂了......开始认为我找不到它,因为它太简单了!
无论如何,我有一个食物菜单项的数据库,所有这些都被分类为开胃菜、主菜、甜点等。
我可以输出按类别排序的所有项目(首先是开胃菜,然后是主菜,然后是甜点),但我想在每个组的顶部添加一个标题,这样它们看起来更像这样......
入门
- 汤
- 佩特
- 另一个入门者...
电源
- 牛排
- 炸鱼薯条
- 其他美味的东西
甜点
- 你明白了...
到目前为止,我已经得到了一个包含食物项的表,该表与带有 course_id 的表相连,并且以下 SQL 生成一个有序列表,但没有标题
$sql = "
SELECT *
FROM food_items
INNER JOIN course_id
ON food_items.course = course_id.course
ORDER BY course_id
";
然后我就得到了 PHP...
$result = $con->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc())
echo '<p class="menuItem">' . $row["item"] . ' - £' . $row["price"] . '</p>';
};
我读过有关 ROLLUP、GROUP BY、ORDER BY 等的内容,但我似乎可以找出最好的方法,而不会使事情过于复杂......
任何正确方向的指针将不胜感激
提前干杯, 标记
最佳答案
您可以保持当前的 PHP 代码不变,并稍加修改。您需要添加一个变量来跟踪当前类别
,并在其更改时写出一个新变量:
$result = $con->query($sql);
if ($result->num_rows > 0) {
$curCategory = '';
while($row = $result->fetch_assoc())
{
if($curCategory != $row["category"])
{
$curCategory = $row["category"];
echo '<p class="menuCategory"><strong>' . $curCategory . '</strong></p>';
}
echo '<p class="menuItem">' . $row["item"] . ' - £' . $row["price"] . '</p>';
}
}
当然,您需要确保查询结果集进行相应排序。
关于php - 将具有相同值的 SQL 行分组并添加组标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41553188/