我有一个sql查询,我从中获得与代理链接的所有答案的权重总和。当我指定例如1的代理ID时,它为我工作。
但我想知道
是否可以在不指定代理ID的情况下获取所有与我在db中拥有的所有代理相关的答案我不知道该如何做到这一点我们是什么时候?
如果我有一个代理数组并且让它返回所有代理的所有权重以返回数组形式的特定问题的代理权限,则可以循环SQL查询。
表的表结构
表代理的表结构
agent_id // al agent ids 1 2 3
表格答案的表格结构
answer_id //所有答案ids weigtage //将被添加为每个代理人的个人总和 11 1 12 0 13 -1
表客户调查的表格结构
// customer id // fault id // survey id 1 1 4 2 3 5
表故障的表结构
fault_id agent_id
// 3 3
// 4 5 //所有这些都是随机数据
表格响应的表格结构
//响应ID调查ID customer_id回答ID response_id sq_id cs_id answer_id
表survey_question的表结构
survey_id question_id
每个答案都与一个错误相关联。和代理人的错。客户进行调查。客户反应错误。客户响应cs_id响应。问题与特定调查有关。而且我有点迷惑了我两天
SELECT SUM( weightage )
FROM answer a
WHERE a.answer_id
IN (
SELECT r.answer_id
FROM response r, survey_question sq
WHERE r.sq_id = sq.sq_id
AND sq.survey_id =4
AND sq.question_id =28
AND r.cs_id
IN (
SELECT cs.cs_id
FROM customer_survey cs, faults f
WHERE cs.fault_id = f.fault_id
AND agent_id =1
)
)`
单个代理的此查询的输出是
Array
(
[0] => Array
(
[SUM( weightage )] => 2
)
)
我希望输出基于像
这样的代理IDArray
(
// agent id 1
[1] => Array
(
[SUM( weightage )] => 2
)
// agent id 2
[2] => Array
(
[SUM( weightage )] => -1
)
// agent id 3
[3] => Array
(
[SUM( weightage )] => 5
)
// agent id 4
[4] => Array
(
[SUM( weightage )] => 4
)
// agent id 5
[5] => Array
(
[SUM( weightage )] => 11
)
)
答案 0 :(得分:1)
不知道你的计划很难给你一个好的建议。您可以找到更多基本关键字JOINS和GROUP BY。
您的查询应该如下所示:
SELECT cs.agent_id, SUM (a.weightage) AS sum_weightage
FROM customer_survey cs
JOIN faults f ON cs.fault_id = f.fault_id
JOIN response r ON r.cs_id = cs.cs_id
JOIN answer a ON a.a.answer_id ON r.answer_id
JOIN survey_question sq ON r.sq_id = sq.sq_id
WHERE sq.survey_id = 4 AND sq.question_id =28
GROUP BY cs.agent_id
输出结果如下:
array(
array('agent_id' => 1, 'sum_weightage' => 12),
array(...)
...
)
这不完全是你想要的,但是最接近你的期望。