无法按ID对表值进行分组

时间:2018-08-07 12:40:43

标签: php mysql

嘿,男孩/女孩们,我有一个问题,我目前正在尝试成为MYSQL / PHP的新手。目前,我正在使用Bootstrap手风琴可折叠组件来显示HTML表(即报告)。这是我当前的表格: Current Table in MYSQL

因此您可以看到reports行包含一些HTML信息,这些信息是表格。假设每行都是不同的报告,我想获取这些信息并将其显示在网页上。所以我可以这样写:

<div class="accordion" id="accordionExample">
        <?php   
    require('db.php');
$i = 0;
$sql = "SELECT `report` FROM `automation-reports`;";
$query = mysqli_query($connection,  $sql);
while($row = mysqli_fetch_assoc($query))
{
    foreach($row as $key => $value)
    {


        ?>
  <div class="card">
    <div class="card-header" id="heading<?php echo $i ?>">
      <h5 class="mb-0">
        <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse<?php echo $i ?>" aria-expanded="true" aria-controls="collapse<?php echo $i ?>">
          Report #1: 8/6/2018
        </button>
      </h5>
    </div>

    <div id="collapse<?php echo $i ?>" class="collapse" aria-labelledby="heading<?php echo $i ?>" data-parent="#accordionExample">
      <div style="text-align: center;" class="card-body">
                <h3 style="float: left;"> Rating-Pull: </h3>
                    <?php 
                            $i++;
                            echo $key;
        echo "$value";
        ?>
</div>
</div>
</div>
<?php
    }
}
?>
</div>

这很棒,因为它可以完成我想做的事情,这就是我想做的: Display Output

不好的是,我现在意识到在一个手风琴“文件夹”中将有多个报告,这是reportid行起作用的地方。因此,可以说我运行了我的程序,并在其上运行了两个(不同的)报告,但是我希望它在网页上的“文件夹”中显示。这两个标记都以reportid中的1标记。

所以我想做的是遍历reports,然后,如果它们具有相同的ID,则将它们组合在该文件夹中,并像这样遍历整个表。这就是我尝试使用嵌套循环和SELECT 'report' FROM 'automation-reports' WHERE 'reportid' = '$i' ;进行此操作的部分,最后我得到了第一个元素。有人可以帮我这个忙,并提供一个很好的解释,以便我可以理解和了解正在发生的事情吗?

谢谢!

编辑: 也许视觉会更好? VISUAL

2 个答案:

答案 0 :(得分:1)

我认为您正在寻找GROUP BYGROUP_CONCAT

SELECT `reportid`, GROUP_CONCAT(`report` SEPARATOR '') as report
FROM `automation-reports`
GROUP BY `reportid`

应该做好这项工作。

答案 1 :(得分:0)

SELECT * 
FROM `automation-reports`
GROUP BY `reportid`

将为您提供每个ID的一行,即。

  1. id 1
  2. id 2
  3. id 3

还是要这样显示每一行?

  1. id 1,id 1
  2. id 2,
  3. id 3,id 3,
  4. id 4

如果是的话,这是一个将报告首先循环组合的可能示例

$sql = "SELECT reportid, GROUP_CONCAT(report SEPARATOR ',') as reports FROM `automation-reports` GROUP BY `reportid`;";



while($row = mysqli_fetch_assoc($query)) {

  echo "<div id='{$row['reportid']}'>";

  echo $row['reports'];

  echo "</div>";

}

我知道这不是您要使用的HTML,但是您应该可以将HTML放入此代码中