Php Group By将第一列拆分两次
在这种情况下,我想展示这样的东西Php Group By将第一列拆分两次,php,mysql,foreach,group-by,Php,Mysql,Foreach,Group By,在这种情况下,我想展示这样的东西 main 1-(3) Sub1-(2) Sub1_6-(1) Sub1_3-(1) Sub2-(1) Sub2_6-(1) main 2-(3) Sub1-(3) Sub1_5-(1) Sub1_3-(1) Sub1_1-(1) main 3-(1) Sub5-(1) Sub5_1-(1) 我尝试了以下代码,但它分裂了一切 +----+---------+---------+---------+ | id | column1 |
- main 1-(3)
- Sub1-(2)
- Sub1_6-(1)
- Sub1_3-(1)
- Sub2-(1)
- Sub2_6-(1)
- Sub1-(2)
- main 2-(3)
- Sub1-(3)
- Sub1_5-(1)
- Sub1_3-(1)
- Sub1_1-(1)
- Sub1-(3)
- main 3-(1)
- Sub5-(1)
- Sub5_1-(1)
- Sub5-(1)
我尝试了以下代码,但它分裂了一切
+----+---------+---------+---------+
| id | column1 | column2 | column3 |
+----+---------+---------+---------+
| 1 | Main1 | Sub1 | Sub1_6 |
| 2 | Main2 | Sub1 | Sub1_5 |
| 3 | Main3 | Sub5 | Sub5_1 |
| 4 | Main1 | Sub2 | Sub2_6 |
| 5 | Main2 | Sub1 | Sub1_3 |
| 6 | Main2 | Sub1 | Sub1_1 |
| 7 | Main1 | Sub1 | Sub1_3 |
+----+---------+---------+---------+
$servername=“localhost”;
$username=“username”;
$password=“password”;
$dbname=“dbname”;
$con=mysqli_connect($servername、$username、$password、$dbname);
$sql=mysqli_query($con,'selectcolumn1,column2,column3,COUNT(*)从表中按column1,column2,column3'分组;
foreach($sql作为$row){
回声“”;
回显“- ”$row['column1']。”-(“$row['COUNT(*)”)”)”
”;
回声“”;
回显“- ”$row['column2']。”-(“$row['COUNT(*)”)”)”
”;
回声“”;
回显“- ”$row['column3']”-(“$row['COUNT(*)'])””
”;
回声“
”;
回声“
”;
回声“
”;
}
这些代码看起来是这样的,所以问题是;在本例中,它将Main1拆分两次,我希望将它们分组并显示为sub
- main 1-(2)
- Sub1-(2)
- Sub1_6-(1)
- Sub1_3-(1)
- Sub1-(2)
- main 1-(1)
- Sub2-(1)
- Sub2_6-(1)
- Sub2-(1)
- main 2-(3)
- Sub1-(3)
- Sub1_5-(1)
- Sub1_3-(1)
- Sub1_1-(1)
- Sub1-(3)
- main 3-(1)
- Sub5-(1)
- Sub5_1-(1)
- Sub5-(1)
它可能有两个以上的sub,所以我需要一些动态的东西。您必须更改代码,使其不会立即创建输出,而是将从数据库读取的所有条目保存在一个内部临时数组中。这允许对属于一起的条目进行汇总。然后,在第二步中,您可以遍历该数组并创建实际输出。
按列1、列2、列3排序可能会使生活更轻松COUNT(*),因为cnt
会将行['COUNT(*)]
放入行['cnt']
不需要修改任何东西,但会使事情更容易阅读。您如何获得不同的计数?在所有列分组中,它们应该共享相同的Count(*)
。您必须更改代码,使其不会立即创建输出,而是将从数据库读取的所有条目保存在内部临时数组中。这允许对属于一起的条目进行汇总。然后,在第二步中,您可以遍历该数组并创建实际输出。按列1、列2、列3排序可能会使生活更轻松COUNT(*),因为cnt
会将行['COUNT(*)]
放入行['cnt']
不需要修改任何东西,但会使事情更容易阅读。您如何获得不同的计数?在所有列分组中,它们应该共享相同的Count(*)
。
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
$con = mysqli_connect($servername, $username, $password, $dbname);
$sql = mysqli_query($con, 'SELECT column1,column2,column3,COUNT(*) FROM table GROUP BY column1,column2,column3');
foreach($sql as $row) {
echo "<ul>";
echo "<li>" . $row['column1'] . " - (" . $row['COUNT(*)'] . ")</li>";
echo "<ul>";
echo "<li>" . $row['column2'] . " - (" . $row['COUNT(*)'] . ")</li>";
echo "<ul>";
echo "<li>" . $row['column3'] . " - (" . $row['COUNT(*)'] . ")</li>";
echo "</ul>";
echo "</ul>";
echo "</ul>";
}