0

我不知道如果没有第二个 sql 查询这是否可能,但我认为最好先问一下。

我有一个带有 GROUP BY 子句的 SQL 查询。在 foreach 循环中显示结果,我想为每个条件插入一个标题。是否可以只处理一个查询?

IE。

仅限非洗手间

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
4

1 回答 1

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

}
于 2012-10-10T10:16:35.603 回答