You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP多数据展示问题:如何按办公区分组展示对应楼层信息

解决分组后仅显示单条楼层数据的问题

你的问题出在原SQL的GROUP BY floor_hall.o_id上——分组后,每个办公室(o_id)只会返回一条floor_hall表的记录,所以无法获取同区域下的所有楼层信息。下面提供两种修改方案:

方案一:PHP端分组处理(推荐)

先查询所有关联数据,再在PHP中按办公室分组整理,这种方式更灵活,不受SQL函数限制:

修改后的SQL

SELECT office_hall.office_name, floor_hall.f_name 
FROM floor_hall 
INNER JOIN office_hall ON office_hall.o_id = floor_hall.o_id 
ORDER BY office_hall.o_id

修改后的PHP代码

$result = mysqli_query($conn, $query);

// 按办公室名称分组存储楼层数据
$officeData = [];
while ($row = mysqli_fetch_assoc($result)) {
    $officeName = $row['office_name'];
    $floorName = $row['f_name'];
    
    // 初始化分组数组
    if (!isset($officeData[$officeName])) {
        $officeData[$officeName] = [
            'count' => 0,
            'floors' => []
        ];
    }
    $officeData[$officeName]['count']++;
    $officeData[$officeName]['floors'][] = $floorName;
}

// 按需求格式输出
foreach ($officeData as $name => $info) {
    echo "Area: $name, Count: {$info['count']},\n";
    foreach ($info['floors'] as $floor) {
        echo "$floor\n";
    }
    echo "\n"; // 区域间空行分隔
}

方案二:SQL用GROUP_CONCAT拼接楼层

通过SQL的GROUP_CONCAT函数将同办公室的楼层拼接成字符串,再在PHP中拆分输出:

修改后的SQL

SELECT office_hall.office_name, 
       COUNT(floor_hall.o_id) as count, 
       GROUP_CONCAT(floor_hall.f_name SEPARATOR '|') as floors 
FROM floor_hall 
INNER JOIN office_hall ON office_hall.o_id = floor_hall.o_id 
GROUP BY floor_hall.o_id

修改后的PHP代码

$result = mysqli_query($conn, $query);

while ($row = mysqli_fetch_assoc($result)) {
    $officeName = $row['office_name'];
    $count = $row['count'];
    // 拆分拼接的楼层字符串
    $floors = explode('|', $row['floors']);
    
    echo "Area: $officeName, Count: $count,\n";
    foreach ($floors as $floor) {
        echo "$floor\n";
    }
    echo "\n";
}

注意事项

方案二中,GROUP_CONCAT有默认长度限制(默认1024字符),如果你的楼层名称较多或较长,可能需要修改MySQL的group_concat_max_len配置来避免截断。

内容的提问来源于stack exchange,提问作者Jonjon Castilleja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:38:20