SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 15.08.2014, 07:56:01
y20frank y20frank ist offline
Anfänger
 
Registriert seit: Aug 2014
Alter: 54
Beiträge: 2
Maximalwert und Datum dazu über mehrere Spalten ermitteln

Hallo zusammen,

folgende MySQL Tabelle habe ich, in der in drei Spalten verschiedene Temperaturwerte (decimal(4,1) ) zu einem Datum ("Zeitstempel") abgespeichert werden.

PHP-Code:
+----+---------+---------+---------+---------------------+
id temp1   temp2   temp3   tscreated           |
+----+---------+---------+---------+---------------------+
|  
|   22.1  |   27.5  |   23.2  2014-08-11 12:55:22 |
+----+---------+---------+---------+---------------------+
|  
|   25.1  |   37.2  |   21.6  2014-08-11 13:11:12 |
+----+---------+---------+---------+---------------------+
|  
|   24.6  |   34.6  |   23.2  2014-08-11 13:22:26 |
+----+---------+---------+---------+---------------------+
|  
|   27.4  |   35.8  |   22.5  2014-08-11 13:33:22 |
+----+---------+---------+---------+---------------------+  
|  
|   23.8  |   30.1  |   21.9  2014-08-11 13:44:48 |
+----+---------+---------+---------+---------------------+ 
. . . u.s.w. . . .

Nun möchte ich mit einer SQL Abfrage den Maximalwert aus allen drei Temperaturfeldern mit dem passenden Datum dazu haben.
Als Ergebnis sollte also
37.2 | 2014-08-11 13:11:12
ausgegeben werden. Mit welcher SQL-Abfrage bekomme ich das hin???

Derzeit habe ich als Ausgangsformel
"SELECT GREATEST(MAX(temp1), MAX(temp2), MAX(temp3)) AS maxtemp, tscreated FROM `temperaturdata`"
welche als Ergebnis zwar den Maximalwert liefert, aber immer das aller erste Datum aus der Tabelle dazu, welches ja nicht zum eigentlichen
Wert passt. Das (falsche) Ergebnis sieht dann so aus:
37.2 | 2014-08-11 12:55:22

Wer weiß Rat?

Vielen Dank
Gruß
Frank
Mit Zitat antworten
  #2  
Alt 15.08.2014, 08:20:39
pguser pguser ist offline
Junior Member
 
Registriert seit: Apr 2014
Alter: 57
Beiträge: 186
AW: Maximalwert und Datum dazu über mehrere Spalten ermitteln

Zitat:
Zitat von y20frank Beitrag anzeigen
Wer weiß Rat?

Tritt MySQL in die Tonne, es übersieht hier einen Syntaxfehler gemäß der SQL-Spec und liefert Dir auch noch ein falschen Resultat.

Ich stelle das mal vereinfach mit PostgreSQL nach:

Code:
test=*# select * from y20;
 id | v1 | v2 | v3 | ts
----+----+----+----+----
  1 | 22 | 27 | 23 |  4
  2 | 25 | 37 | 21 |  5
  3 | 24 | 34 | 23 |  6
  4 | 27 | 35 | 22 |  7
  5 | 23 | 30 | 21 |  8
(5 rows)
Halt vereinfach, alles int-Werte, auch für den timestamp.

Deine Abfrage in PG wirft einen Fehler:

Code:
test=# select greatest(max(v1), max(v2), max(v3)) as maxval, ts from y20;
ERROR:  column "y20.ts" must appear in the GROUP BY clause or be used in an aggregate function at character 55
STATEMENT:  select greatest(max(v1), max(v2), max(v3)) as maxval, ts from y20;
ERROR:  column "y20.ts" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: ...ct greatest(max(v1), max(v2), max(v3)) as maxval, ts from y2...
Da weiß man gleich, was los ist, oder?

Code:
test=*# select greatest(max(v1), max(v2), max(v3)) as maxval, ts from y20 group by ts order by maxval desc limit 1;
 maxval | ts
--------+----
     37 |  5
(1 row)
Mit Zitat antworten
  #3  
Alt 15.08.2014, 11:50:02
y20frank y20frank ist offline
Anfänger
 
Registriert seit: Aug 2014
Alter: 54
Beiträge: 2
AW: Maximalwert und Datum dazu über mehrere Spalten ermitteln

Hallo! Danke für die schnelle Info!

Also, folgende Selektion habe ich nun:

Code:
select greatest(max(temp1), max(temp2), max(temp3)) as maxval, tscreated 
from temperaturdata
group by tscreated 
order by maxval desc LIMIT 1
Und siehe da: Das Ergebnis ist FALSCH! *grrr* Es wird ein mir völlig unschlüssiger Wert "mitten aus der Tabelle" gegriffen und angezeigt:

34.8 | 2014-07-31 19:00:11

Korrekt wäre jedoch:

43.2 | 2014-07-19 17:00:07

Versteh das mal einer - womöglich wieder ein MySQL Bug!
Ich werde weiter "forschen"...

Danke! :-)

Gruß
Frank
Mit Zitat antworten
  #4  
Alt 15.08.2014, 15:24:19
pguser pguser ist offline
Junior Member
 
Registriert seit: Apr 2014
Alter: 57
Beiträge: 186
AW: Maximalwert und Datum dazu über mehrere Spalten ermitteln

Zitat:
Zitat von y20frank Beitrag anzeigen
Versteh das mal einer - womöglich wieder ein MySQL Bug!
Ich werde weiter "forschen"...
warum nicht gleich eine funktionierende DB nehmen? Zu einfach?
Mit Zitat antworten
Antwort

Stichworte
greatest, max, maximalwert, mehrere spalten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Gruppieren nach Datum jger3110 PHP Grundlagen 0 08.08.2008 23:23:48
Datum zu jedem Datenbankeintrag ausgeben wad PHP Grundlagen 6 09.08.2007 08:29:13
Sortierung nach Datum mit Order by nach Konvertierung ins Deutsche Format falsch carlos7262 MySQLi/PDO/(MySQL) 2 12.04.2007 08:43:32
datum ermitteln netdirk PHP für Fortgeschrittene und Experten 0 13.11.2005 19:09:12
Datum des Montags der aktuellen Woche ermitteln. or-k PHP für Fortgeschrittene und Experten 2 17.07.2002 00:25:22


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:08:22 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt