Select max() von links nach rechts
Chris
- datenbank
Hallo zusammen,
ich überlege schon den ganzen Tag wie ich den höchsten Wert eines Datensatzes herausbekommen kann.
Struktur:
UID | DAY1 | DAY2 | DAY3 | DAY4
1 | 2000-01-01 | 2000-01-01 | 2000-01-01 | 2004-05-08
2 | 2000-01-01 | 2000-01-01 | 2004-05-08 | 2000-01-01
3 | 2000-01-01 | 2004-05-08 | 2000-01-01 | 2000-01-01
Ich möchte nun gerne den höchsten Wert aus eine Reihe Selecten, sprich den höchsten Wert für eine UID.
Bei UID 1 währe das DAY4
Bei UID 2 währe das DAY3
Bei UID 3 währe das DAY2
Natürlich sind in der Wirklichkeit mehr verschiedene Datumseinträge vorhanden ;-)
Habt Ihr da vieleicht Rat für mich ?
Danke für jeden Tipp,
Chris
Hello,
Habt Ihr da vieleicht Rat für mich ?
Nicht so wirklich. Ich unterstelle mal, dass Du MySQL benutzt. Die Aggregatsfunktionen sind sehr schnell, aber für Horizontalfunktionen würdest Du benutzerdefinierte Funktionen (Stored Procedures) benötigen.
Für diesen einfachen Fall gibt es bei MySQL eine Fubnktion
select UID, greatest(DAY1, DAY2, DAY3, DAY4) from <table>;
Eventuell musst Du die Daten vorher noch vergleichsfähig umwandeln.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi Tom,
Für diesen einfachen Fall gibt es bei MySQL eine Fubnktion
select UID, greatest(DAY1, DAY2, DAY3, DAY4) from <table>;
hat gepasst, Danke ;-)
SELECT objekte.firma AS name FROM objekte,kalender WHERE objekte.id=kalender.objekt_id AND greatest(kalender.day_1,kalender.day_2,kalender.day_3,kalender.day_4,kalender.day_5,kalender.day_6,kalender.day_7,kalender.day_8,kalender.day_9,kalender.day_10,kalender.day_11,kalender.day_12,kalender.day_13,kalender.day_14)='2004-05-05'
so in etwa war das Ziel ...
Viele Grüße,
Chris