2015-11-01 46 views
0

我已經將我想從我的SQL表獲得的信息分解爲單獨的SQL查詢,但是我對如何將所有語句與一個變量結合起來感到困惑。這個變量正在PHP中用來顯示我的數據。針對一個PHP變量的多個MYSQL查詢

這是我想運行的SQL查詢。

SELECT * FROM weather ORDER BY stamp DESC LIMIT 1 

SELECT SUM(rainfall) FROM weather WHERE stamp >= CURDATE()) AS total_rainfall 

SELECT MAX(maxwind) FROM weather WHERE stamp >= CURDATE()) AS max_windspeed 

SELECT MAX(temperature) FROM weather WHERE stamp >= CURDATE()) AS max_temperature 

SELECT MIN(temperature) FROM weather WHERE stamp >= CURDATE()) AS min_temperature 

這裏是我當前的查詢,給了我一切,我想,除了最大風速,最大溫度,並在過去24小時內最低氣溫。

SELECT *, (SELECT SUM(rainfall) FROM weather WHERE stamp >= CURDATE()) AS total_rainfall FROM weather ORDER BY stamp DESC LIMIT 1 

基本上,我只是想添加當前日期內發生的最高溫度,最低溫度和最大風速。

MySQL data table example

這裏是我想要顯示使用PHP數據的方式。

<?php 

$url1=$_SERVER['REQUEST_URI']; 

header("Refresh: 60; URL=$url1"); 

$connectinfo = mysql_connect("***", "***", "***") 
or die(mysql_error()); 

mysql_select_db("raspberrydb001", $connectinfo); 

$sql = "SELECT *, (SELECT SUM(rainfall) FROM weatherdata WHERE stamp >= CURDATE()) AS total_rainfall FROM weatherdata ORDER BY stamp DESC LIMIT 1; "; 


$result = mysql_query($sql, $connectinfo); 

while($row = mysql_fetch_array($result)) { 

$windspeed = $row['windspeed']; 
$maxwind = $row['maxwind']; 
$temperature = $row['temperature']; 
$humidity = $row['humidity']; 
$rainfall = $row['rainfall']; 
$stamp = $row['stamp']; 
$d=mktime(); 
$total_rainfall = $row['total_rainfall']; 

echo "<div style='text-align:center'><h5>Temperature: " . $temperature . "(F)" . "<br>" . "Rainfall: " . $total_rainfall . "(in)" . "<br>" . "Wind: " . $windspeed . "(MPH)" . "<br>" . "Humidity: " . $humidity . "(%)" . "<br>" . "</h5></div>"; 
echo "<div style='text-align:right'><h6>Updated at: " . $stamp . "</h6></div>"; 
echo "<br>"; 

} 

?> 

感謝

+0

你爲什麼不添加其他查詢像你這樣的total_rainfall? –

回答

0

我會建議它拆分成兩個查詢。

首先,收集所有數據:

SELECT * FROM weather ORDER BY stamp DESC LIMIT 1 

其次,收集最小/最大數據:

SELECT 
    SUM(rainfall) AS total_rainfall, 
    MAX(maxwind) AS max_windspeed, 
    MAX(temperature) AS max_temperature, 
    MIN(temperature) AS min_temperature 
FROM 
    weather 
WHERE stamp >= CURDATE()) 
LIMIT 1 
+1

沒有通過聚合函數總是會返回一個且只有一個行,所以不需要限制1,因爲sql數據是無序的,所以一般無限制的限制也是沒有意義的。 –

+0

我添加了我的PHP塊以顯示我如何顯示數據。這讓我感到困惑。 –