我不知道如果没有第二次SQL查询这是否可行,但我认为先问一下会很好。
我有一个带有GROUP BY子句的SQL查询。在foreach循环中显示结果,我想为每个条件插入一个标题。是否可以只使用一个查询?
即
仅限非Taproom
DATA
DATA
DATA
仅限Taproom
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
答案 0 :(得分:1)
所以,假设您的数据将是某事,如下所示:
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
你可以(正如air4x在上面的评论中所说)使用变量存储标题,并在循环结果时,只打印标题,如果它与先前存储的标题不同。
注意:只有当您的结果按标题值(我可以看到它们)排序时,此方法才有效。
PHP代码看起来像这样:
$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'];
}