Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
标题为php foreach和sql group by_Php_Mysql - Fatal编程技术网

标题为php foreach和sql group by

标题为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

我不知道在没有第二个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`, 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子句。每个组都应有自己的标题/标题。请使用变量存储组标题。当您在结果上循环时,如果行中的标题和变量不匹配,则打印标题,否则不打印。将行中的标题指定给每个循环末尾的变量。