标题为php foreach和sql group by
我不知道在没有第二个sql查询的情况下这是否可行,但我想最好先问一下 我有一个带有GROUPBY子句的SQL查询。在显示结果的foreach循环中,我想为每个条件插入一个标题。是否可以只使用一个查询 即 仅限非餐厅标题为php foreach和sql group by,php,mysql,Php,Mysql,我不知道在没有第二个sql查询的情况下这是否可行,但我想最好先问一下 我有一个带有GROUPBY子句的SQL查询。在显示结果的foreach循环中,我想为每个条件插入一个标题。是否可以只使用一个查询 即 仅限非餐厅 DATA DATA DATA DATA DATA DATA 只有餐厅 DATA DATA DATA DATA DATA DATA SQL代码: SELECT `Keg`.`content_type_id`, `Keg`.`is_taproom_only`, co
DATA
DATA
DATA
DATA
DATA
DATA
只有餐厅
DATA
DATA
DATA
DATA
DATA
DATA
SQL代码:
SELECT
`Keg`.`content_type_id`, `Keg`.`is_taproom_only`, count(content_type_id), `ContentType`.`id`, `ContentType`.`name`
FROM
`kegdb`.`kegs` AS `Keg`
LEFT JOIN
`kegdb`.`content_types` AS `ContentType`
ON (`Keg`.`content_type_id` = `ContentType`.`id`)
WHERE
`status_type_id` = 6
GROUP BY
is_taproom_only, content_type_id
ORDER BY
`is_taproom_only` ASC, `ContentType`.`name` ASC
因此,假设您的数据如下所示:
is_taproom_only, content_type_id, content_type_name
-----------------------
NonTaproom, content_type_id, content_type_name
NonTaproom, content_type_id, content_type_name
NonTaproom, content_type_id, content_type_name
TaproomOnly, content_type_id, content_type_name
TaproomOnly, content_type_id, content_type_name
TaproomOnly, content_type_id, content_type_name
$is_taproom_only = '';
foreach $rows as $row {
echo ($is_taproom_only <> $row['is_taproom_only']) ? $row['is_taproom_only'] : ''; //only print if they're different
$is_taproom_only = $row['is_taproom_only']; //store for the next iteration
//print other data
echo $row['content_type_id'];
echo $row['content_type_name'];
}
您可以(正如air4x在上面的评论中所说)使用一个变量来存储标题,并且在循环结果时,仅当标题与以前存储的标题不同时才打印标题
注意:只有当结果按标题值排序时(我可以看到它们是这样的),这种方法才有效
PHP代码如下所示:
is_taproom_only, content_type_id, content_type_name
-----------------------
NonTaproom, content_type_id, content_type_name
NonTaproom, content_type_id, content_type_name
NonTaproom, content_type_id, content_type_name
TaproomOnly, content_type_id, content_type_name
TaproomOnly, content_type_id, content_type_name
TaproomOnly, content_type_id, content_type_name
$is_taproom_only = '';
foreach $rows as $row {
echo ($is_taproom_only <> $row['is_taproom_only']) ? $row['is_taproom_only'] : ''; //only print if they're different
$is_taproom_only = $row['is_taproom_only']; //store for the next iteration
//print other data
echo $row['content_type_id'];
echo $row['content_type_name'];
}
$is_taproom_only='';
foreach$行作为$行{
echo($is_taproom_only$row['is_taproom_only'])?$row['is_taproom_only']:'';//仅当它们不同时打印
$is_taproom_only=$row['is_taproom_only'];//为下一次迭代存储
//打印其他数据
echo$row['content_type_id'];
echo$row['content_type_name'];
}
请显示您的SQL查询。此外,您还可以使用PHP中的infrade()
函数,使用一条SQL语句一次插入多行。标题信息来自哪里?另一个数据库表?它来自GROUPBY子句。每个组都应有自己的标题/标题。请使用变量存储组标题。当您在结果上循环时,如果行中的标题和变量不匹配,则打印标题,否则不打印。将行中的标题指定给每个循环末尾的变量。