2017-11-10 10 views
0

複数の行の行をループし、各日の平均を取得するプロシージャがあります。これは次のようになります。WHILE全体のSELECT文の結果をすべて出力します

ここにENDがないことを無視して、何らかの理由でコピーしません。

私は、この手順を実行すると、出力意志は次のようになります。 enter image description here

だから私は二つの質問があります:私は$行= $のmsqli_fetch_assoc($結果)とPHPでwhileループを使用しようとすると を、これはまだ動作しますか?

2番目の質問: いいえの場合、結果を1つの 'テーブル'として出力するにはどうすればよいですか?

ありがとうございます!

+0

あなたは1日に1つのIDしか持っていませんか?そうでない場合、これらの奇妙な非シーケンシングIDはどこから来ますか?これはすべて1日に1つのクエリを集約して実行する必要があります。このようにすると、特に余計なサブクエリを追加するときに、非常識なタッチになります。 – JNevill

答えて

0

単純なクエリでこれを行うだけです。手順、ループ、サブクエリ、すべてこの他のナンセンスを持ってする理由はありません:

SELECT date(timestamp) datestamp, ROUND(AVG(Temperature), 1) AS 'avgt', ROUND(AVG(Humidity), 1) AS 'avgh' 
FROM temperature_room2 
GROUP BY datestamp; 

私はあなたの変わり者idフィールドがちょうどあなた以来、そのレコードのために一日に陥るたまたまテーブルからランダムIDを出力している疑いがあります集計していますが、GROUP BYidのような集約されていないフィールドを含めることはできません。他のRDBMSはこのクエリーをエラーで拒否しますが、mysqlはたくさんのロープを提供しますので、自分自身と組織の半分をハングアップできます。

+0

あなたは素晴らしいです。かなりの時間(SQLを使い慣れていませんでした)これを手がかりにしてくれました。私はおそらく今それを働かせます。ありがとう! – ItsKasper

+0

私はそれが助けてうれしいです。手続き型ではなく、セットベースの思考に頭を合わせてみてください。非常にめったにテーブルをループしたり、ループ内でSQL文を実行する必要がありません。 – JNevill

0

はいphp whileループまたは各ループのaが探しているものです。ここには各行の結果が表示されます。両方の例があります。

ループ

if ($result->num_rows > 0) { 
while($row = $result->fetch_assoc()) { // output data of each row 
$var1 = $row['YourDBtableName1']; 
$var2 = $row['YourDBtableName2']; 
$var3 = $row['YourDBtableName3']; 
$var4 = $row['YourDBtableName4']; 
$var5 = $row['YourDBtableName5']; 
$var6 = $row['YourDBtableName6']; 
$var7 = $row['YourDBtableName7']; 
//create your Table or div and echo the results. It will create the table for each row. 
echo $var1; 
echo $var2; 
echo $var3; 
echo $var4; 
echo $var5; 
echo $var6; 
echo $var7;}} 

そして、あなたのForeachループしながら。

if ($results->num_rows > 0){ 
foreach ($results as $res){ 
$var1 = $res['YourDBtableName1']; 
$var2 = $res['YourDBtableName2']; 
$var3 = $res['YourDBtableName3']; 
$var4 = $res['YourDBtableName4']; 
$var5 = $res['YourDBtableName5']; 
$var6 = $res['YourDBtableName6']; 
$var7 = $res['YourDBtableName7']; 
//create your Table or div and echo the results. It will create the table for each row. 
echo $var1; 
echo $var2; 
echo $var3; 
echo $var4; 
echo $var5; 
echo $var6; 
echo $var7;}} 
+0

また、各行をhtmlとcssでカスタマイズすることもできます – Jonny

関連する問題