首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP将嵌套查询的结果赋值到数组中

问PHP将嵌套查询的结果赋值到数组中
EN

Stack Overflow用户
提问于 2012-07-10 04:58:18
回答 4查看 1.8K关注 0票数 0

我需要帮助才能将嵌套查询的结果分配到数组中。这是一个场景:

代码语言:javascript
复制
$Date_Collection = mysql_query("SELECT DISTINCT Date FROM TblDate");

while($date = mysql_fetch_array($Date_Collection)) // Loop through all the dates
{
    $var_date = $date['Date'];
    $result = mysql_query("select min(Speed) as Min_spd, max (Speed) as Max_spd, avg   
                  (Speed) as Avg_spd from ... where Date= $var_date");

  while($row = mysql_fetch_array($result))
   {
     echo "row[Min_spd]";
     echo "row[Max_spd]";
     echo "row[Avg_spd]";
    }
 }

此查询的输出如下所示:

代码语言:javascript
复制
Min_Spd |Max_Spd |Avg_Spd|       Date|
    12.0|    25.0|   20.4| 2012-10-01|
    11.0|    28.0|   21.4| 2012-10-02|
    10.0|    26.0|   23.4| 2012-10-05|
    08.0|    22.0|   21.4| 2012-10-08|

我基本上需要显示所有这些日期的Min_Spd总和,Max_spd总和,Avg_spd总和。因此,我想,如果我可以将这些值分配到一个数组中,然后从该数组中计算出这些和,这可能是一个好主意。

有人能帮我解决这个问题吗?是否可以使用数组来存储这些值,然后访问这些值并计算这些值的总和。如果我可以使用数组,谁能告诉我在PHP中使用数组的语法。我真的很感谢在这方面的任何帮助。

除了使用数组之外,是否还有其他方法,例如创建一个临时表来保存这些值,然后删除临时表。如果可以使用临时桌,你能告诉我怎么做吗?我可以将temptable用于单个循环,但是有一个嵌套循环,我不知道如何在嵌套循环中创建一个临时表来存储所有值。

EN

回答 4

Stack Overflow用户

发布于 2012-07-10 05:07:52

代码语言:javascript
复制
$data = array();
while ($row = mysql_fetch_assoc($result)) {
    $data[] = $row;
}

然后你可以在以后做

代码语言:javascript
复制
foreach($data as $row) {
   echo $row['Min_spd'];
   echo ...
   ...
}
票数 0
EN

Stack Overflow用户

发布于 2012-07-10 05:11:44

我不知道是否可以使用MySQL SUM函数对te查询执行此操作,请尝试使用它。但是在本例中,您应该使用数组来存储值,然后使用array_sum返回元素的和。如下所示:

代码语言:javascript
复制
$min_spd = array();
$max_spd = array();
$avg_spd = array();
while($row = mysql_fetch_assoc($result))
{
    $min_spd[] = $row['Min_spd'];
    $max_spd[] = $row['Max_spd'];
    $avg_spd[] = $row['Avg_spd'];
}

echo array_sum($min_spd);

也可以使用变量来存储和添加值:

代码语言:javascript
复制
$min_spd = 0;
$max_spd = 0;
$avg_spd = 0;

while($row = mysql_fetch_assoc($result))
{
    $min_spd += $row['Min_spd'];
    $max_spd += $row['Max_spd'];
    $avg_spd += $row['Avg_spd'];
}

echo $min_spd;
票数 0
EN

Stack Overflow用户

发布于 2012-07-10 05:18:58

首先,我将通过执行第一个查询来为自己保存一个嵌套查询:

代码语言:javascript
复制
$result = mysql_query("select Date, min(Speed) as Min_spd, max (Speed) as Max_spd, avg(Speed) as Avg_spd from ... group by Date")

然后在循环遍历每一行时,为总和创建一个运行合计:

代码语言:javascript
复制
$sumMinSpeeds=0;
$sumMaxSpeeds=0;
$sumAvgSpeeds=0;
while($row = mysql_fetch_array($result))
{
    echo row['Min_spd'];
    echo row['Max_spd'];
    echo row['Avg_spd'];

    $sumMinSpeeds += $row['Min_spd'];
    $sumMinSpeeds += $row['Max_spd'];
    $sumMinSpeeds += $row['Avg_spd'];

}
echo $sumMinSpeeds;
echo $sumMaxSpeeds;
echo $sumAvgSpeeds;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11403047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档