簡體   English   中英

如何使用PHP中的一個mySQL數據庫表處理兩組大型數據?

[英]How to work with two large sets of data from one mySQL database table in PHP?

我正在嘗試在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
);

這使您可以一次從其他select語句中選擇數據。 您應將2個內部“ select語句”替換為各自的查詢。 結果將暫時放入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”之后的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM