Php 如何合计相同角色记录的数量?

Php 如何合计相同角色记录的数量?,php,mysql,Php,Mysql,我想在一个总数中得到相同角色的数量。当我获取某个代理介绍的代理详细信息记录时(11150000001)。它将返回大量具有不同角色的代理记录(1000200030000060006000) 从中我需要得到代理商的业务总额。现在我明白了。但是,如果有某个代理在同一个角色中,我想得到同一个角色代理在单个金额中的金额,但我要单独得到 //get all employee under one employee $rank1=''; $rank2='';$rank3='';$ra

我想在一个总数中得到相同角色的数量。当我获取某个代理介绍的代理详细信息记录时(11150000001)。它将返回大量具有不同角色的代理记录(1000200030000060006000)

从中我需要得到代理商的业务总额。现在我明白了。但是,如果有某个代理在同一个角色中,我想得到同一个角色代理在单个金额中的金额,但我要单独得到

  //get all employee under one employee
            $rank1=''; $rank2='';$rank3='';$rank4='';$rank5='';$rank6='';
               $get_employee="SELECT emp_code,intro_code FROM emp_details WHERE intro_code='".$emp_code."'";
               $exe_employee=mysql_query($get_employee);

               while($fetch_emp=mysql_fetch_assoc($exe_employee))
               {
                     $total_amount1=0;
                     $role='';
                   $employee_code=$fetch_emp['emp_code'];
                   //echo $employee_code."<br>";
                   $get_premium="SELECT emp_code,user_role,premium_amount FROM business_details WHERE emp_code='".$employee_code."'";
                  //echo $get_premium."<br>";
                   $exe_premium=mysql_query($get_premium);

                   while($fetch_amount=mysql_fetch_array($exe_premium))
                   {
                      $total_amount1 +=$fetch_amount['premium_amount'];
                      $role=$fetch_amount['user_role'];  
                   }
              }
      echo $role."-".$total_amount1."<br>"; 
       // Role-Amount
       // 5000-75000
        //  5000-105000
        //3000-15000
//获取一个员工下的所有员工
$rank1=''$rank2=''$rank3=''$rank4=''$rank5=''$rank6='';
$get_employee=“从emp_详细信息中选择emp_代码、简介_代码,其中简介代码=”””。“$emp_代码。””;
$exe\u employee=mysql\u查询($get\u employee);
而($fetch\u emp=mysql\u fetch\u assoc($exe\u employee))
{
$total_amount1=0;
$role='';
$employee_code=$fetch_emp['emp_code'];
//echo$employee_代码。“
”; $get_premium=“从业务_详细信息中选择emp_代码、用户_角色、溢价金额,其中emp_代码=””。“$employee_代码”。”; //echo$get_premium.“
”; $exe\u premium=mysql\u查询($get\u premium); 而($fetch\u amount=mysql\u fetch\u数组($exe\u premium)) { $total_amount1+=$fetch_amount['premium_amount']; $role=$fetch_amount['user_role']; } } echo$role.“-”$total_amount1.“
”; //角色数量 // 5000-75000 // 5000-105000 //3000-15000

在上面的图片中,我得到了排名5的10500,但我想得到排名5的75000+10500列

以下是我的表格结构:

试试这个

 $get_premium="SELECT emp_code,user_role,premium_amount,SUM(premium_amount) FROM business_details WHERE emp_code='".$employee_code."' group by user_role" ;
试试这个

 $get_premium="SELECT emp_code,user_role,premium_amount,SUM(premium_amount) FROM business_details WHERE emp_code='".$employee_code."' group by user_role" ;
试试这个

 $get_premium="SELECT emp_code,user_role,premium_amount,SUM(premium_amount) FROM business_details WHERE emp_code='".$employee_code."' group by user_role" ;
试试这个

 $get_premium="SELECT emp_code,user_role,premium_amount,SUM(premium_amount) FROM business_details WHERE emp_code='".$employee_code."' group by user_role" ;

整个代码块不能替换为单个SQL查询。您想创建一个新的

让我们从一个相对简单的查询开始,该查询获取所有员工角色组合的总
保费金额

SELECT emp_code,
       user_role,
       SUM(premium_amount) AS total_amount
FROM business_details
GROUP BY emp_code, user_role;
这将产生如下结果:

emp_code    | user_role | total_amount
-----------------------------------
15040000001 | 3000      |  15000     
15040000001 | 5000      | 180000
11130000001 | 4000      |  30000
11130000001 | 1000      |   5000
这已包含表中所需的所有信息,但布局不正确。SQL可以为我们做这件事,而不是使用PHP将其重新格式化为表所需的行/列

我们将指定
user\u role
可以作为不同列的不同值,而不是按
user\u role
进行分组:

SELECT emp_code,
       SUM(CASE WHEN user_role=1000 THEN premium_amount ELSE 0 END) AS rank1,
       SUM(CASE WHEN user_role=2000 THEN premium_amount ELSE 0 END) AS rank2,
       SUM(CASE WHEN user_role=3000 THEN premium_amount ELSE 0 END) AS rank3,
       SUM(CASE WHEN user_role=4000 THEN premium_amount ELSE 0 END) AS rank4,
       SUM(CASE WHEN user_role=5000 THEN premium_amount ELSE 0 END) AS rank5,
       SUM(CASE WHEN user_role=5000 THEN premium_amount ELSE 0 END) AS rank6
FROM business_details
GROUP BY emp_code;
结果将是:

emp_code    | rank1 | rank2 | rank3 | rank4 | rank5  | rank6
------------------------------------------------------------
15040000001 |     0 |     0 | 15000 |     0 | 180000 |     0
11130000001 |  5000 |     0 |     0 | 30000 |      0 |     0
奖金建议
您发布的PHP代码包含一个明显的安全漏洞,使您的数据库(或者可能是整个系统)对任何人都完全开放。在您的web应用程序中使用它并不有趣!我在一篇文章中写到了这一点。

将整个代码块替换为一个SQL查询。您想创建一个新的

让我们从一个相对简单的查询开始,该查询获取所有员工角色组合的总
保费金额

SELECT emp_code,
       user_role,
       SUM(premium_amount) AS total_amount
FROM business_details
GROUP BY emp_code, user_role;
这将产生如下结果:

emp_code    | user_role | total_amount
-----------------------------------
15040000001 | 3000      |  15000     
15040000001 | 5000      | 180000
11130000001 | 4000      |  30000
11130000001 | 1000      |   5000
这已包含表中所需的所有信息,但布局不正确。SQL可以为我们做这件事,而不是使用PHP将其重新格式化为表所需的行/列

我们将指定
user\u role
可以作为不同列的不同值,而不是按
user\u role
进行分组:

SELECT emp_code,
       SUM(CASE WHEN user_role=1000 THEN premium_amount ELSE 0 END) AS rank1,
       SUM(CASE WHEN user_role=2000 THEN premium_amount ELSE 0 END) AS rank2,
       SUM(CASE WHEN user_role=3000 THEN premium_amount ELSE 0 END) AS rank3,
       SUM(CASE WHEN user_role=4000 THEN premium_amount ELSE 0 END) AS rank4,
       SUM(CASE WHEN user_role=5000 THEN premium_amount ELSE 0 END) AS rank5,
       SUM(CASE WHEN user_role=5000 THEN premium_amount ELSE 0 END) AS rank6
FROM business_details
GROUP BY emp_code;
结果将是:

emp_code    | rank1 | rank2 | rank3 | rank4 | rank5  | rank6
------------------------------------------------------------
15040000001 |     0 |     0 | 15000 |     0 | 180000 |     0
11130000001 |  5000 |     0 |     0 | 30000 |      0 |     0
奖金建议
您发布的PHP代码包含一个明显的安全漏洞,使您的数据库(或者可能是整个系统)对任何人都完全开放。在您的web应用程序中使用它并不有趣!我在一篇文章中写到了这一点。

将整个代码块替换为一个SQL查询。您想创建一个新的

让我们从一个相对简单的查询开始,该查询获取所有员工角色组合的总
保费金额

SELECT emp_code,
       user_role,
       SUM(premium_amount) AS total_amount
FROM business_details
GROUP BY emp_code, user_role;
这将产生如下结果:

emp_code    | user_role | total_amount
-----------------------------------
15040000001 | 3000      |  15000     
15040000001 | 5000      | 180000
11130000001 | 4000      |  30000
11130000001 | 1000      |   5000
这已包含表中所需的所有信息,但布局不正确。SQL可以为我们做这件事,而不是使用PHP将其重新格式化为表所需的行/列

我们将指定
user\u role
可以作为不同列的不同值,而不是按
user\u role
进行分组:

SELECT emp_code,
       SUM(CASE WHEN user_role=1000 THEN premium_amount ELSE 0 END) AS rank1,
       SUM(CASE WHEN user_role=2000 THEN premium_amount ELSE 0 END) AS rank2,
       SUM(CASE WHEN user_role=3000 THEN premium_amount ELSE 0 END) AS rank3,
       SUM(CASE WHEN user_role=4000 THEN premium_amount ELSE 0 END) AS rank4,
       SUM(CASE WHEN user_role=5000 THEN premium_amount ELSE 0 END) AS rank5,
       SUM(CASE WHEN user_role=5000 THEN premium_amount ELSE 0 END) AS rank6
FROM business_details
GROUP BY emp_code;
结果将是:

emp_code    | rank1 | rank2 | rank3 | rank4 | rank5  | rank6
------------------------------------------------------------
15040000001 |     0 |     0 | 15000 |     0 | 180000 |     0
11130000001 |  5000 |     0 |     0 | 30000 |      0 |     0
奖金建议
您发布的PHP代码包含一个明显的安全漏洞,使您的数据库(或者可能是整个系统)对任何人都完全开放。在您的web应用程序中使用它并不有趣!我在一篇文章中写到了这一点。

将整个代码块替换为一个SQL查询。您想创建一个新的

让我们从一个相对简单的查询开始,该查询获取所有员工角色组合的总
保费金额

SELECT emp_code,
       user_role,
       SUM(premium_amount) AS total_amount
FROM business_details
GROUP BY emp_code, user_role;
这将产生如下结果:

emp_code    | user_role | total_amount
-----------------------------------
15040000001 | 3000      |  15000     
15040000001 | 5000      | 180000
11130000001 | 4000      |  30000
11130000001 | 1000      |   5000
这已包含表中所需的所有信息,但布局不正确。SQL可以为我们做这件事,而不是使用PHP将其重新格式化为表所需的行/列

我们将指定
user\u role
可以作为不同列的不同值,而不是按
user\u role
进行分组:

SELECT emp_code,
       SUM(CASE WHEN user_role=1000 THEN premium_amount ELSE 0 END) AS rank1,
       SUM(CASE WHEN user_role=2000 THEN premium_amount ELSE 0 END) AS rank2,
       SUM(CASE WHEN user_role=3000 THEN premium_amount ELSE 0 END) AS rank3,
       SUM(CASE WHEN user_role=4000 THEN premium_amount ELSE 0 END) AS rank4,
       SUM(CASE WHEN user_role=5000 THEN premium_amount ELSE 0 END) AS rank5,
       SUM(CASE WHEN user_role=5000 THEN premium_amount ELSE 0 END) AS rank6
FROM business_details
GROUP BY emp_code;
结果将是:

emp_code    | rank1 | rank2 | rank3 | rank4 | rank5  | rank6
------------------------------------------------------------
15040000001 |     0 |     0 | 15000 |     0 | 180000 |     0
11130000001 |  5000 |     0 |     0 | 30000 |      0 |     0
奖金建议
您发布的PHP代码包含一个明显的安全漏洞,使您的数据库(或者可能是整个系统)对任何人都完全开放。在您的web应用程序中使用它并不有趣!我已经在一本书里写过了。

Ya!!我只是个初学者!!很快就会改善的!!你好。请不要在你的问题中添加乞讨信息——我刚刚编辑了你的两条这样的信息。请记住,这里的读者都是志愿者,因此他们会在闲暇时回答自己感兴趣的问题。我们认为所有关于堆栈溢出的问题都同等重要。耶!!我只是个初学者!!很快就会改善的!!你好。请不要在你的问题中添加乞讨信息——我已经编辑了两条来自yo的此类信息