在php和mysql中显示每个组的成员数
在我的MySql表中,我有由id定义的组,如下所示: 第1组-01在php和mysql中显示每个组的成员数,php,mysql,list,group-by,yii2,Php,Mysql,List,Group By,Yii2,在我的MySql表中,我有由id定义的组,如下所示: 第1组-01 第2组-02 第3组-03 这些小组有以下小组: 01组有子组:011013014 成员是每个子组的一部分。例如,John是011子组的成员 我需要计算每个组(及其子组)的所有成员,并将其显示在组名称旁边,如下所示: <?= Club::find()->where(['like', 'group_id', '01%', false])->count() ?> 第01组:100名成员 第02组:45名成员
第2组-02
第3组-03 这些小组有以下小组: 01组有子组:011013014 成员是每个子组的一部分。例如,John是011子组的成员 我需要计算每个组(及其子组)的所有成员,并将其显示在组名称旁边,如下所示:
<?= Club::find()->where(['like', 'group_id', '01%', false])->count() ?>
第01组:100名成员第02组:45名成员
第03组:73名成员 我正在使用,html,php,mysql和Yi2PHP框架 使用yii2活动记录,我计算01组的成员,如下所示:
<?= Club::find()->where(['like', 'group_id', '01%', false])->count() ?>
完成此任务的最佳方式是什么?我需要显示包含所有组成员计数的列表。我不认为最好的方法是对页面中的每个组和硬代码运行这个查询
任何帮助,mysql,php,yii2。。。不管怎样?我不熟悉易建联,但您需要的mysql语句是:
SELECT COUNT(*)
FROM `club`
GROUP BY substr(group_id, 1, 2)
我建议尝试运行此代码,看看它是否符合您的要求:
SELECT `group_id`, Count(`group_id`) AS `Count of group_id` FROM `club` GROUP BY `group_id`
希望它能返回一个包含组id的表,每个表都有一个计数
更新-如果group_id列包含011、012等,而不是01、02、03,则使用substr或left函数作为group by参数:
SELECT `group_id`, Count(`group_id`) AS `Count of group_id` FROM `club` GROUP BY Left(`group_id`,2)
您可以选择所有内容并在PHP中执行计数,如
foreach($results as $result){
$counts[substr($result['group_id'],0,2)]++;
}
假设子组的前2位始终是组id。这将返回计数的关联数组。如何修改此查询以从名为group的相关表中选择组名?group.id=club.group\u id和group table有一个名为“name”的列。另外,如何在html列表中显示此内容?name+count还在挣扎吗?考虑以下简单的两步行动:1。如果您还没有这样做,请提供适当的DDL(和/或SQLFIDLE),以便我们可以更轻松地复制问题。2.如果尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。是否有子组表?否,组存储在严格的层次结构中。他们的Id代表了这个层次结构。例如,第一组(父级)的id为01000,该(子组)的子组为:011001001300。。。这些孩子有他们的孩子,例如,孩子01100有孩子:01110,01120。。。