我想一次拿到相同角色的金额。当我获取某个代理引入的代理详细信息记录时(11150000001)。它将返回许多具有不同角色的座席记录(1000、2000、3000、4000、5000、6000)。
由此,我需要获得代理商业务总额。现在我明白了。但是,如果有一个相同角色的座席,我想一次获得相同角色座席的金额,但是我要分别获得。
//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
在上图中,我在第5级中得到10,500,但我想在第5级中得到75000 + 10500。
下面是我的表结构:
最佳答案
整个代码块将被单个SQL查询替换。您要创建一个pivot table。
让我们从一个相对简单的查询开始,该查询获取所有employee-role组合的总premium_amount
:
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_role
分组,我们将指定user_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代码包含一个明显的安全漏洞,该漏洞使您的数据库(或可能是整个系统)向任何人开放。 SQL injection在您的Web应用程序中不好玩!我已经在previous answer中写过它。