norbert: max Wert MySQL

Hallo

ich habe ein Problem ich bekomme nicht den max Wert aus meine r Datenbank geliefert ich weiß nicht wo der Fehler liegt? Es wird gar nichts ausgegeben...

KST_NR wird als autincrement hoch gezählt und ich muß für eine andere Tabelle den höchsten KST_NR Wert abfragen

Das ist mein Code

$rs_max = mysql_query("SELECT max(KST_NR) FROM kostenart", $dbh) or die('Fehler: ' . mysql_error());
$row_max= mysql_fetch_assoc($rs_max);
echo $row_max['KST_NR'];

  1. Ich hasse zwar diese PHP/mySQL-Syntax ^^, aber ich glaube, das müsste so aussehen:

    $rs_max = mysql_query("SELECT max(KST_NR) AS DeinAlias FROM kostenart", $dbh) or die('Fehler: ' . mysql_error());
    $row_max= mysql_fetch_assoc($rs_max);
    echo $row_max['DeinAlias'];

    Gruss,
    Daniel

    1. Das mit den Alias ist falsch, ich frag mich woher Du die Syntax her hast?

      1. hi,

        Das mit den Alias ist falsch, ich frag mich woher Du die Syntax her hast?

        wie kommst du denn auf diesen unsinn?

        gruss,
        wahsaga

        1. hi,

          Das mit den Alias ist falsch, ich frag mich woher Du die Syntax her hast?

          wie kommst du denn auf diesen unsinn?

          gruss,
          wahsaga

          ja das ist falsch! weil es nicht funktioniert!

          ich habe es nun so gelöst und jetzt funktioniert es. warum weiß ich auch nicht.

          bei oracle ist das etwas anders deswegen verstehe ich das bei mysql auch nicht wirklich.

          Lösung:
           $rs_max = mysql_query("SELECT MAX(KST_NR) FROM kostenart", $dbh) or die('Fehler1: ' . mysql_error());
           $row_max= mysql_fetch_assoc($rs_max);
           $NEU_KST_NR  = $row_max['MAX(KST_NR)'];
           echo "<br>";

          1. Hi ,

            $rs_max = mysql_query("SELECT MAX(KST_NR) FROM kostenart", $dbh) or die('Fehler1: ' . mysql_error());
             $row_max= mysql_fetch_assoc($rs_max);
             $NEU_KST_NR  = $row_max['MAX(KST_NR)'];
             echo "<br>";

            und dies hier funktioniert wirklich nicht?
            $rs_max = mysql_query("SELECT MAX(KST_NR) as test FROM kostenart", $dbh) or die('Fehler1: ' . mysql_error());
            $row_max= mysql_fetch_assoc($rs_max);
            $NEU_KST_NR  = $row_max['test'];
            echo "<br>";

            ciao
            romy

            1. und dies hier funktioniert wirklich nicht?
              $rs_max = mysql_query("SELECT MAX(KST_NR) as test FROM kostenart", $dbh) or die('Fehler1: ' . mysql_error());
              $row_max= mysql_fetch_assoc($rs_max);
              $NEU_KST_NR  = $row_max['test'];
              echo "<br>";

              nein!

              ich habe es ausprobiert und ich bekomme gar kein ergebnis zurück geliefert. es kommt auch kein fehler. also muss die abfrage falsch sein.

      2. Hi ,

        Das mit den Alias ist falsch, ich frag mich woher Du die Syntax her hast?

        erst lesen, dann reden...

        ciao
        romy

  2. yo,

    nur mal ne dumme frage, du hast aber schon werte in der tabelle, bzw. keine null werte in der spalte kst_nr ?

    Ilja

  3. Hi norbert,

    group by ist das Stichwort.
    Syntaxbeschreibungen findest Du hier: http://www.mysql.com/doc/en/GROUP-BY-Functions.html

    <zitat>
    MAX(expr)
    Returns the minimum or maximum value of expr. MIN() and MAX() may take a string argument; in such cases they return the minimum or maximum string value. See section 7.4.5 How MySQL Uses Indexes.
    mysql> SELECT student_name, MIN(test_score), MAX(test_score)
        ->        FROM student
        ->        GROUP BY student_name;

    </zitat>
    ciao
    romy

    1. ich brauche kein group da ich nur ein wert auslese also ist das quwatsch!

      ich lese nur die höchste nummer aus mehr nicht. ihr seit da alle auf den falschen pfad. ich habe es inzwischen schon anders gelöst siehe unten!

      1. Hi ,

        ich brauche kein group da ich nur ein wert auslese also ist das quwatsch!

        Ich habe es beim zweiten Mal lesen gemerkt, aber deswegen könntest Du trotzdem Deinen Ton überprüfen.
        Und Deine Lösung ist die kompliziertere Variante der Alias-Lösung, sieh es einfach ein.

        ciao
        romy

  4. hi,

    $rs_max = mysql_query("SELECT max(KST_NR) FROM kostenart", $dbh) or die('Fehler: ' . mysql_error());
    $row_max= mysql_fetch_assoc($rs_max);
    echo $row_max['KST_NR'];

    du liest keine spalte mit dem namen KST_NR aus, also kannst du anschliessend auch nicht mit dem index KST_NR auf dein assoziatives array zugreifen.

    du brauchst also hier einen alias, wenn du assoziativ zugreifen willst - wie daniel ja schon sagte ...

    gruss,
    wahsaga

    1. ich versteh nicht was du mir damit sagen willst???

      ich habe es zwar nun anders gelöst (siehe untern) aber trotzdem was meinst du?