php - 如何在 PHP 中处理来自一个 mySQL 数据库表的两组大数据?

标签 php mysql

我试图在 PHP 脚本中处理来自同一个 mySQL 表的两组数据。这个想法是每小时从 API 中收集数据并存入数据库。然后,第二个脚本从数据库中提取信息并显示滚动的 6 小时增量。

我在尝试从两个数据集创建增量时遇到了一些问题。我需要运行两个 mySQL 查询来获取我需要的数据(当前和 6 小时前的数据),但是如果不在输出每个条目的循环中包含查询(这些最多可以运行几百次,我不认为运行那么多 mySQL 查询会很好吗?)

这是我目前所拥有的:

//select the system table and pulls data acquired within the last hour.
$sql = "SELECT system, vp, vpthreshold, owner, time FROM SysData WHERE time > DATE_SUB(NOW(),INTERVAL 1 HOUR)";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {

    //Calculates contested percentage
    $vpthreshold = $row["vpthreshold"]; 
    $vp = $row["vp"];   
    $currentcontested = $vp/$vpthreshold*100;

    //Catches potential divide by zeroes, echos system is stable.
    if ($vp == 0.0){
        echo $row["system"] . " " . "is Stable<br>";
    }
    //else output contested percentage with system name in readable format.
    else{

        echo $row["system"] . " " . "{$currentcontested}%" . "<br>";
    }
} 
}

有一个大致相同的声明,它提取并呼应了第二组信息。我怎样才能把这两个集合放在一起,以便我可以使用它们?对 PHP 非常陌生,可以在此处即时学习。

最佳答案

您可以查看嵌套查询。类似于以下内容:

SELECT (data_now.somevalue - data_prev.somevalue) as deltavalue FROM
(
    (your first select statement) as data_now, 
    (your 6 hours ago select statement) as data_prev
);

这使您可以一次性从其他选择语句中选择数据。 您应该用各自的查询替换 2 个内部“选择语句”。结果会暂时放入data_now和data_prev中。然后,您可以在外部 select 语句中将它们用作普通表。

编辑:为了更具体地说明您想要什么,这里有一个更新的示例:

SELECT (data_now.vp/data_now.vpthreshold - data_prev.vp/data_prev.vpthreshold) as deltavalue FROM
(
    (SELECT system, vp, vpthreshold, owner, time FROM SysData WHERE time > DATE_SUB(NOW(),INTERVAL 1 HOUR)) as data_now, 
    (your 6 hours ago select statement) as data_prev
);

在您的 PHP 代码中,请记住将结果引用为:

$row["deltavalue"]

或者您在外部 SELECT 中“as”之后放置的任何内容。

关于php - 如何在 PHP 中处理来自一个 mySQL 数据库表的两组大数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30393051/

相关文章:

php - 你能让一个 PHP 函数递归而不重复它的名字吗?

php - 当我在时间戳上使用 "modify"时,它会给出错误的输出

php - foreach 结果分为两列

asp.net - 在 ASP.NET 应用程序中使用 mySql 数据

mysql - 使用主键进行查询优化

mysql - 如何处理从游戏中不断更新的数据库

php - RouteCollection.php 中的 NotFoundHttpException 第 161 行 : laravel 5. 3

php - Android Studio : PHP mysql variable isnt being passed in RegisterAPI when adding 2 variables

php - 防止 php 类被扩展

mysql - 将所有值相加,忽略负数