Martin Hein: maximum aus drei feldern

Hallo Forum,

in meiner DB-Tabelle stehen bei jedem Datensatz in drei Feldern
je ein Datum als Timestamp. Die Felder heissen in meinem Fall:

'modification_date'
'confirmation_date'
'online_date'

Bei manchen Datensätzen ist es 'modification_date', bei manchen
das 'confirmation_date' und bei anderen das 'online_date' das
jeweils grösse der drei.

Jetzt hätte ich das Result gerne sortiert:

1. Versuch:
-----------
Mit:
"
... ORDER by 'modification_date', 'confirmation_date', 'online_date'
"
... erreiche ich eigentlich garnichts.

2. Versuch:
-----------
Mit:
"
Select 'modification_date'+'confirmation_date'+'online_date' AS max
...
ORDER BY max
"
... erreiche ich zumindest, dass unabhängig davon, in welchem Feld
der Mximalwert steht, in meinem Result der grösste Wert oben steht.
Also schon nicht schlecht.

3. Versuch:
-----------
ich hätte nun genre, dass in meinem Result erst alle, die in dem
Feld 'online_date' den grössten Wert haben sortiert nach diesem
Wert, dann alle die in dem Feld 'confirmation_date' den grössten
Wert haben nach diesem Feld sortiert und dann alle, die in dem
Feld 'modification_date' den grössten Wert haben und dann nach
dem Feld sortiert. Logisch könnte ich mir das so vorstellen:

"
Select max('modification_date','confirmation_date','online_date') AS max
...
ORDER BY max
"

... geht ntürlich nicht.

kann mir jemand einen Tipp geben ?

danke und

beste gruesse,
martin

  1. Hi,

    wie wär's mit dem Gegenteil von LEAST(arg,arg,arg)? Wie es heisst, steht im Onlinehandbuch von MySQL. (Mir ist der Name grad entfallen.) Ich nehme an, dass du MySql verwendest.

    Ciao, Frank

    1. right,

      "GREATEST()" heisst das Gegenstück und es macht genau das was
      es soll.

      prima!

      merci für die antwort

  2. Hallo Martin,

    folgenden Spalten

    'modification_date'
    'confirmation_date'
    'online_date'

    und dieser Beschreibung

    1. Versuch:

    ich hätte nun genre, dass in meinem Result erst alle, die in dem
    Feld 'online_date' den grössten Wert haben sortiert nach diesem
    Wert, dann alle die in dem Feld 'confirmation_date' den grössten
    Wert haben nach diesem Feld sortiert und dann alle, die in dem
    Feld 'modification_date' den grössten Wert haben und dann nach
    dem Feld sortiert. Logisch könnte ich mir das so vorstellen:

    würde ich natürlich die einfach Lösung

    ORDER BY online_date, confirmation_date, modification_date

    zuordnen, was meiner Meinung nach die richtige Lösung für Deine Beschreibung
    ist. Ich entnehme Deinem Posting allerdings, dass Du dies gar nicht haben
    willst, was Du beschreibst, sondern eine ganz andere Reihenfolge. Ich
    vermute, dass Dir dabei die CASE-WHEN-Anweisung helfen könnte, bitte Dich
    einfach mal Beispieldaten mit der gewünschten Sortierung vorzustellen,
    damit ich verstehen kann, was Du wirklich willst.

    Freundliche Grüße

    Vinzenz