Select-Anweisung GREATEST

  • Hallo zusammen!

    Ich möchte aus meiner Datenbank den höchsten Wert aus 3 Spalten ausgeben.

    Mit

    SQL
    SELECT name, GREATEST(spalte1, spalte2, spalte3) AS wert
    FROM mannschaften


    funktioniert das auch wunderbar. Ich bekomme den höchsten Wert und den dazugehörigen Namen aus der Zeile ausgegeben.

    Ich habe aber absolut keine Ahnung, was ich anstellen muss, den ausgegebenen Wert seiner Spalte zu zuweisen. Ich brauche also in der Ausgabe den Namen der Spalte aus dem der höchste Wert kommt.
    Wie mache ich das?

    Vielen Dank im Vorraus!

    scabinho

  • dachte ich auch erst, aber er weiß ja die spalte net, die er abfragt.
    wenn ich sage: gib mir den max wert aus a,b,c

    a=10
    b=20
    c=30

    dann liefert mir der query die 30

    bei nem subselect müsste ich dann krude verknüpfen denke ich.
    oder ggf mit mehrfacher OR-Verknüpfung?

    wieso braucht man sowas???^^


    edit:

    habs grad rausgefunden :)

    SQL
    SELECT name, 
    IF(spalte1 = GREATEST(spalte1, spalte2, spalte3), 'spalte1', 
        IF(spalte2 = GREATEST(spalte1, spalte2, spalte3), 'spalte2', 
            IF(spalte3 = GREATEST(spalte1, spalte2, spalte3), 'spalte3', NULL
    )))  as 'spalte', 
    GREATEST(spalte1, spalte2, spalte3) as  'wert'
    FROM mannschaften


    man kann das ganze mit dem if-zeugs verschachteln.

    Code
    select IF('fieldname with condition','if true value','if false value') from table_name where 1;


    indem man beim if false value-teil einfach ne weitere if reinkloppt

    Einmal editiert, zuletzt von synaptic (27. April 2015 um 21:24)