agent
表和lead_submission
表。
id_agent agent_name last_login
1 xxx 2014-11-28 12:15:47
2 abc 2014-12-06 12:51:45
3 cvb 2014-12-12 12:51:45
id_agent agent_name entry_date qa_details SelDisposiotn
1 xxx 2014-11-28 12:15:47 504:Yes|581:|515:No| Complete Survey
1 xxx 2014-11-28 12:15:47 504:Yes|581:Yes|515:No| Complete Survey
2 abc 2014-12-06 12:51:45 504:Yes|522:|515:No| Complete Survey
3 cvb 2014-12-12 12:51:45 504:Yes|532:Yes|515:No| Partial Survey
我的查询是从agent_name
表中获取agent
的列表。来自count(agent_name)
表lead_submission
的{{1}}表count(qa_details)
来自lead_submission
表SelDisposition
lead_submission
left join lead_submission on lead_submission.id_agent=agent.id_agent
group by
lead_submission.agent_name
}
<?php
//DB connection goes here
$sql="
SELECT a.agent_name LoginAgent
, COUNT(s.agent_name) AgentApplicationHit
, COUNT(s.qa_details) QADetails
, s.selDisposition Status
FROM agent a
LEFT
JOIN lead_submission s
ON s.id_agent = a.id_agent
WHERE s.entry_date BETWEEN '2014-11-28 12:15:47' AND '2014-12-06 12:51:45'
AND s.SelDisposition = 'Complete Survey'
GROUP
BY s.agent_name;
";
$query=mysql_query($sql);
?>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<table border="1">
<thead>
<tr>
<th>LoginAgent</th>
<th>AgentAppliccationHit</th>
<th>QA Details</th>
<th>Status</th>
</tr>
<?php while($row=mysql_fetch_assoc($query))
{?>
<tr style="color:red" >
<td><?php echo $row['LoginAgent']; ?></td>
<td><?php echo $row['AgentApplicationHit']; ?></td>
<td><?php echo $row['QADetails']; ?></td>
<td><?php echo $row['Status']; ?></td>
</tr>
<?php } ?>
我的结果: -
LoginAgent AgentAppliccationHit QA Details Status
xxx 2 2 Complete Survey
abc 1 2 Complete Survey
直到现在一切都很好。
现在我有另一张桌子question_details
qno qshortcode question
504 PPI whatever
515 Test whatever1
正如您可以看到来自504
表的qno 515
和question_details
来自qa_details
表的lead_submission
以及我count(qa_details)
的结果1}}。
现在,我如何从qa_details
lead_submission
中的每个504:Yes|522:|515:No|
行获取特定值计数,其中每行504
和515
都在lead_submission
像LoginAgent AgentAppliccationHit 504(PPI) 515(Test) Status
xxx 2 2 2 Complete Survey
abc 1 1 1 Complete Survey
表一样
{{1}}
答案 0 :(得分:0)
首先,正如所建议的那样,你应该更正规化你的数据库......但是......你可以用你当前的设置得到你的计数......你需要使用一点RAM但是......如果问题,代理,客户答案和排列很多。
编辑您的查询以在结果中返回qa_details,例如:
SELECT qa_details, a.agent_name LoginAgent ... etc
这里是:
$stats_manager = array(); //or $stats_manager = [] ; depending on your php version.while($row=mysql_fetch_assoc($query))
{
//split up the answers into their respective questions
foreach(explode('|', $row['qa_details']) as $Question)
{
$QnA = explode(':', $Question); //$QnA[0] gives you the $Question number, $QnA[1] is the answer
$stats_manager[$row['LoginAgent']][$QnA[0]]++; //increment the number of times Agent has a question in his qa_details column
$stats_manager[$row['LoginAgent']]['AgentApplicationHit'] = $row['AgentApplicationHit'];
$stats_manager[$row['LoginAgent']]['QADetails'] = $row['QADetails']; //still necessary? I doubt.
$stats_manager[$row['LoginAgent']]['Status'] = $row['Status'];
}
}
现在有一个包含所有座席的多维数组,以及它们各自的Q和A的数量 然后你可以简单地循环数组(我省略了表头和html的其他非关键位
foreach($stats_manager as $agent_name => $stats_data)
{
echo "<tr><td>$agent_name</td>";
//loop hrough all the fields
foreach($stats_data as $key => $value){
echo "<td>$value</td>";
}
echo "</tr>";
}
这里的关键是避免在整理数据之前回显任何内容。 此外,尽管这会起作用,但最好将其标准化
未测试。应该工作。
编辑:事后意识到我在每个循环中清空$stats_manager
。固定
所以我不会让我编辑更正后的代码,所以我已经删除了stats_manager变量的初始化,但代码仍然有效,带有“notice undefined variable”警告