Php 获取id列表中所有字段的值,而不在mysql查询中指定它们的id?

Php 获取id列表中所有字段的值,而不在mysql查询中指定它们的id?,php,mysql,group-by,aggregate-functions,Php,Mysql,Group By,Aggregate Functions,我有一个sql查询,从中可以得到链接到代理的所有答案的权重之和。当我指定一个代理id(例如,1)时,它对我有效 但我想知道 在没有指定代理id的情况下,我是否可以得到与db中所有代理链接的所有答案我不知道如何使用zend 如果我有一个代理数组,并让它返回所有代理的所有权重,以数组形式返回特定问题的代理权重,那么sql查询是否可以循环 表的表结构 表代理的表结构 代理id//al代理id 1. 2. 三, 表答案的表结构 答案_id//要添加的所有答案id weigtage//分别对每个代理具

我有一个sql查询,从中可以得到链接到代理的所有答案的权重之和。当我指定一个代理id(例如,1)时,它对我有效

但我想知道

  • 在没有指定代理id的情况下,我是否可以得到与db中所有代理链接的所有答案我不知道如何使用zend

  • 如果我有一个代理数组,并让它返回所有代理的所有权重,以数组形式返回特定问题的代理权重,那么sql查询是否可以循环

表的表结构

表代理的表结构

代理id//al代理id 1. 2. 三,

表答案的表结构

答案_id//要添加的所有答案id weigtage//分别对每个代理具有总和 11 1 12 0 13-1

表客户调查的表结构

//客户id//故障id//调查id 1 1 4 2 3 5

表故障的表结构

故障\u id代理\u id

//3 3

//4 5//所有这些都是随机数据

表响应的表结构

//响应id调查id客户id回答id 响应\u id sq\u id cs\u id应答\u id

表格调查问题的表格结构

调查问题

每个答案都与一个故障相关。还有特工的过失。客户进行调查。客户响应有问题。自定义响应cs\u id以响应。这个问题与一项特定的调查相关联。你有点困惑我花了两天时间

  • 我有20个随机代理id,我需要在mysql中对它们进行循环,并获得每个代理id的结果。目前,我正在寻找一名经纪人

此查询对单个代理的输出为

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
    )
)

不知道你的计划,很难给你一个好的建议。了解更多信息的基本关键字是和

然后,您的查询应该如下所示:

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(...)
   ...
)

这并不完全是你想要的,但应该最接近你的期望。

没有时间彻底审视它。然而,你所描述的那种情况通常表明你需要一个组。当你有时间的时候,你一定会回来。我只是想,这可以通过contrroller来完成,只需循环所有代理id,并将查询放入该循环中。并继续将结果添加到数组中。但如果一个查询能够做到这一点的话,情况会是这样的。我现在正在控制器上工作:)您可以在一个查询中实现什么-在一个查询中实现。从php跳转到mysql通常会大大降低程序的速度。如果您可以发布每个表的一些记录以及该数据的预期结果,这将非常有帮助:)请始终这样做,但是我正在处理的模块将只供管理员使用,因此页面加载问题不会令人烦恼。感谢我已经通过循环从controller解决了这个问题代理id通过sql查询,但页面上有点重,比如10秒。您对所有外键都设置了索引吗?它没有工作,出现了此错误#1064-您的sql语法有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在r.answer\u id JOIN survey\u question sq ON r.sq\u id=sq.sq\u id,其中sq.survey\u在第5行,我想我给了您一个正确方向的好提示(使用连接和分组方式)-现在是你自己站起来的时候了我不知道如何使用分组方式。是的,我知道我正在朝着这个方向前进。
array(
   array('agent_id' => 1, 'sum_weightage' => 12),
   array(...)
   ...
)