php - 计算逗号分隔值的用户数

标签 php mysql

我的数据库中有逗号分隔的字段 base_users。如何查询以计算该组的 totaluser?如果数据不在逗号分隔字段中,我可以毫无问题地计算 totaluser

SELECT COUNT(base_u_id) AS totaluser 
FROM base_users 
WHERE base_u_group =".$row['base_gp_id']."
1)base_users
|base_u_id |  base_u_name  | base_u_group |
------------------------------------------
|    1     |   username1   |   1, 2, 4    |
|    2     |   username2   |   3          |
|    3     |   username3   |   3, 4       |
|    4     |   username4   |   1, 4       |

2)base_groups                           
| base_gp_id | base_gp_name  | 
------------------------------
|    1       |    group1     |
|    2       |    group2     |   
|    3       |    group3     | 
|    4       |    group4     |
|    5       |    group5     |

From the sample database above, my expected result will be:

Total User of group1 = 2
Total User of group2 = 1
Total User of group3 = 2
Total User of group4 = 3
Total User of group5 = 0

这是我目前尝试过的:

<?php
$getUser = base_executeSQL("SELECT * FROM base_users");

while($row_getUser = base_fetch_array($getUser))
{
    $explodeData = explode(", ",$row_getUser['base_u_group']);
    foreach($explodeData as $data)
    {
        $getUserGroupSQL = base_executeSQL("SELECT COUNT(base_u_id) AS totaluser FROM base_users as user, base_groups as gp WHERE gp.base_gp_id ='".$data."' ");

        while($UserGroupProfile_row = base_fetch_array($getUserGroupSQL))
        if (base_num_rows($getUserGroupSQL)!= 0)
            $totaluser = $UserGroupProfile_row["totaluser"];
        elseif (base_num_rows($getUserGroupSQL)== 0)
            $totaluser = 0;
    }
}
?>

最佳答案

使用以下逻辑:只是提示

$group = array(1=>0,2=>0,3=>0,4=>0,5=>0);
$base_u_group = array('1,2,4','3','3,4','1,4');
foreach($base_u_group as $gr) {
       $split = explode(',', $gr);
       if (!empty($split)) {
          foreach($split as $val) {
            if ($val) {
              $group[$val] =  $group[$val] + 1;
            }
          }
       }
}
var_dump($group);

关于php - 计算逗号分隔值的用户数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30231626/

相关文章:

php - 为什么在 PHP 中操作变量之前必须先将函数返回值赋给变量

php - 在 XAMPP 中设置由管理员管理的 MySQL

mysql - 将值从一行移动到另一行?

mysql - 将 MySQL 客户端配置传递给 "rails db"

php - mysql 查询 wp_post 列表和类别和日期

php - 找出php中两个字符串之间的匹配百分比?

mysql - Excel 和 MySQL -- 运行时错误 '13' : Type mismatch

Python pymysql datetime.datetime元组到时间戳

javascript - 更改表格布局的最佳方法 - PHP 还是 JavaScript?

php - Zend update() 更改 id,尽管 id 设置为 NULL 和 auto_increment