我有一个SQL查询,从中我得到了链接到代理的所有答案的权重总和。 当我为示例 1 指定代理 ID 时,它对我有用。
但我想知道
-
是否可以不指定代理 ID,我得到链接到数据库中所有代理的所有答案,我不知道该怎么做?
-
如果我有一个代理数组并使其返回所有代理的所有 Weigtage,以数组形式返回特定问题的代理 Weigtage,是否可以循环 SQL 查询。
的表结构
表代理的表结构
agent_id//AL 代理 ID123
表答案的表结构
answer_id//所有答案 ID Weigtage//要添加的每个代理都有单独总和 11 1 12 0 13 -1
表客户调查的表结构
//客户 ID//故障 ID//调查 ID 1 1 4 2 3 5
表错误的表结构
fault_id agent_id
//3 3
//4 5//这一切都是随机数据
表响应的表结构
响应 ID 调查 ID customer_id答案 IDresponse_id sq_id cs_id answer_id
表survey_question的表结构
survey_id question_id
每个答案都与一个故障相关联。 和代理故障。 客户进行调查。 客户响应错误。 客户响应cs_id响应。 问题与特定调查相吻合。 而且它有点混乱,花了我两天时间
- 我有 20 个随机代理 ID,我需要在 MySQL 中循环它们并获得每个代理 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
)
)
我希望输出基于代理 ID 类似,例如
Array
(
// 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
)
)
不知道你的方案,很难给你一个好的建议。您了解更多信息的基本关键字是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(...)
...
)
这不是你想要的,但应该最接近你的期望。