php - mysql将同一列中的相同值分组到回显表

标签 php mysql sorting grouping

我正在努力展示我正在寻找的结果。我需要创建一个表,该表可以对机架列进行分组,该机架列将作为表的名称,布局列中的内容是表的数据。


 $sql = ' SELECT  rack, id, GROUP_CONCAT(layout) as grouped_name FROM sorting_items GROUP BY rack ORDER BY rack ASC';

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {


        echo '<td>'.$row['rack'].' </td>';
        echo '<table style=" border: 1px solid black; width:100%"><tr>';
        echo '<td>'.$row['grouped_name'].' </td>'; 
        echo '</tr></table>';
    }
} else {
    echo "0 results";
}
$conn->close();


我的 table 是这样的

╔══════════╦══════╗
║  layout  ║ rack ║
╠══════════╬══════╣
║  cisco1  ║ case1║
║  cisco2  ║ case1║
║  cisco3  ║ case1║
║  juniper ║ case2║
║  cisco4  ║ case2║
╚══════════╩══════╝

我现在正在获取这个

╔══════════╦══════════════════════╗
║   case1  ║ cisco1,cisco2,cisco2 ║
╚══════════╩══════════════════════╝
╔══════════╦══════════════════════╗
║   case2  ║ juniper,cisco4       ║
╚══════════╩══════════════════════╝

希望通过上面的代码实现这一点

╔══════════╗     
║  case1   ║ 
╠══════════╣
║  cisco1  ║ 
║  cisco2  ║ 
║  cisco3  ║ 
╚══════════╝

╔══════════╗
║  case2   ║ 
╠══════════╣
║  juniper ║ 
║  cisco4  ║ 
╚══════════╝

最佳答案

看起来您在结果数据循环中实际想要的内容是这样的,它用逗号分割 grouped_name 字段,然后在单独的表行上输出每个值:

while($row = $result->fetch_assoc()) {
    echo '<table style=" border: 1px solid black; width:100%">';
    echo '<tr><th>'.$row['rack'].' </th></tr>';
    foreach (explode(',', $row['grouped_name']) as $name) {
        echo '<tr><td>'.$name.' </td></tr>'; 
    }
    echo '</table>';
}

关于php - mysql将同一列中的相同值分组到回显表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54168080/

相关文章:

algorithm - 为什么这个合并排序实现不起作用?

PHP:收集传递给函数的所有变量作为数组?

php - sudo apt-get install php-redis 停止工作

php - 如何在wordpress中生成顺序编号

php - 准备好的语句在 mySQL/PHP 中不起作用

javascript - 基于两个值和一个条件的 jQuery 排序列表

php - 如何计算数组的元素?

mysql - 如何将同一列两次添加到不同位置的表中?

mysql - '\xE7' 使用的正确字符集是什么

python - 插入排序算法差一错