MySQL - Summe bilden

Wettermacher

Grünschnabel
Hallo liebe Forumsmitglieder,

Ich bin absoluter Neuling in PHP und MySQL und habe daher eine Frage an Euch bei der Ihr mir hoffentlich behilflich sein könnt.

Ich betreibe eine Wetterstation deren Software die Wetterdaten kontinuierlich in eine MySQL Datenbank schreibt, wobei jeder Messwert eine eigene Spalte erhält...soweit sogut.
Ich habe es jetzt auch geschafft mir einzelne Daten aus der DB zu picken und anzeigen zu lassen.

Folgendes habe ich aber noch nicht geschafft:

Die DB wird ja laufend aktualisiert und jede Minute kommt ein neuer Datensatz hinzu. Ich möchte nun eine Abfrage erstellen
die die Gesamtsumme des gefallenen Niederschlages des aktuellen Tages in eine Variable schreibt.

Das Problem ist ja, dass mit jeder Minute auch die Datenmege die für den aktuellen Tag berücksichtigt werden muss, größer wird, und in der Variable soll ja dann immer die Summe des Niederschlags stehen, die bis zum Zeitpunkt des Aufrufens auf der Homepage gefallen ist.

Die erste Spalte meiner Tabelle ist das Datum in Form von 2005-12-09 19:57

Ich hoffe Ihr könnt mir weiterhelfen.

Viele Grüße

Michael
 
Hallo,
Code:
SELECT SUM(Niederschlag) 
  FROM Wettertabelle
sollte die Summe der Niederschläge aller gespeicherten Daten liefern. Wenn du die Summe nur von einem Teil haben willst, kannst du mit
Code:
SELECT SUM(Niederschlag) 
  FROM Wettertabelle
  WHERE Datumsspalte > CURDATE()
die Abfrage einschränken.
Da du noch viele Frage zu MySQL haben wirst, wird dir der Folgende Link sicher helfen können: http://dev.mysql.com/doc/mysql/de
 
Hallo,

Vielen Dank für die schnelle Antwort, doch es gibt noch ein Problem.

Ich habe zum testen erstmal die Summe der Niederschläge der ganzen DB ausgeben lassen wollen, mit folgendem Script

<?PHP
mysql_connect("localhost",
"Visual","xxx");
mysql_select_db("pepsite1");
$niederschlagssumme = "SELECT SUM(Niederschlag) FROM daten ";
$ergebnis = mysql_query($niederschlagssumme);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->Niederschlag;
}
?>


Das Problem ist dass ich keinen Wert bekomme. In der Fehlermeldung heisst es dass es an der Zeile: echo $row->Niederschlag; liegt was ich aber nicht verstehe denn ich summiere ja in dieser Spalte...

Weisst du woran das liegt?

Vielen Dankl

Michael
 
Du projezierst nicht das Feld Niederschlag, sondern das unbenannte Feld SUM(Niederschlag). Um mit einem Bezeichner auf das Feld zuzugreifen, mußt Du ihm einen Aliasnamen geben:
Code:
SELECT SUM(Niederschlag) AS Summe FROM daten
Nun kannst Du mit dem Bezeichner Summe auf das Feld zugreifen.

Gruß hpvw
 
Hallo nochmal,

Also mit dem Bezeichner klappt prima, vielen Dank.

Aber die Einschränkung WHERE Datum = CURDATE () funktioniert nicht. Also die Datumsspalte ist als datetime definiert. Ich bekomme ne logische NULL wenn ich das in PHPMyAdmin mal ausführen lasse.


Gruß

Michael
 
Zuletzt bearbeitet:
Hi Michael,

WHERE LEFT(Datum, 10) = CURDATE () sollte funktionieren, hier werden die ersten 10 Zeichen mit CURDATE () verglichen.

Da Abfragen wie "Was war am Tag xy so los?" vermutlich öfter vorkommen werden, würd ich dir raten statt datetime eine date und eine time anzulegen.
 
Hallo an Alle,

So ich habe es jetzt geschafft, und zwar mit der Einschränkung WHERE datum > CURDATE().

Warum es heute auf einmal funktioniert.......ich habe keine Ahnung, vielleicht weil ich gestern vergessen hatte, nach der Änderung auf datetime, den Server neu zu starten. Vielen Dank an alle die mir geholfen haben.

Zur Letzten Anmerkung muss ich sagen dass ich ein mitgeliefertes Programm benutze dass die Daten in die MySQL -DB reinschreibt. Gäbe es denn My-SQL seitig eine Möglichkeit Datum und Zeit zu trennen?

Vielen Dank

Michael
 

Neue Beiträge

Zurück