Alex: MySQL: Maximalwert aus Berechnung zweier Spalten

Hallo ich versuche in einer Tabelle die Maximalwerte einiger Spalten zu ermitteln:

"SELECT MAX(punkte) AS max_punkte, MAX(zeit) AS max_zeit FROM mytable;"

Jetzt würde ich gerne neben den absoluten Maximalwert auch gerne den Maximalwert Punkte pro Zeit ermitteln.

Mein Versuch:

  
"SELECT MAX(punkte) AS max_punkte, MAX(zeit) AS max_zeit, MAX(punkte/zeit) AS max_ppz FROM mytable;"

Führt zu folgender Fehlermeldung

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in ...

in der Zeile der weiteren Verarbeitung:
$zeile = mysql_fetch_assoc($max_ergebnis);

Habe es auch mit "sum" um die einzelnen Werte und der Division probiert (Try & Error), aber auch dies führte zur gleichen Fehlermeldung.

Ist es möglich, den Maximalwert für den berechneten Wert Punkte/Zeit in die bestehende Abfrage zu integrieren? Ich könnte mir derzeit zwar noch helfen, da ich eine redundante Spalte mit dem berechneten Wert habe, aber diese würde ich eigentlich gerne löschen.

Freundliche Grüße
Alex

  1. Führt zu folgender Fehlermeldung

    Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in ...

    in der Zeile der weiteren Verarbeitung:
    $zeile = mysql_fetch_assoc($max_ergebnis);

    Statt auf den SQL-Fehler einzugehen, weise ich mal dezent darauf hin, dass du ganz offensichtlich die Fehlermeldungen der Datenbank ignorierst. Oder warum übergibst du mysql_fetch_assoc() den Fehler von mysql_query()? Damit kann erstere Funktion logischerweise nichts anfangen, woraufhin PHP dir obigen Fehler vor die Füße wirft.

    Schau dir das erste Beispiel von mysql_query(). Wenn du das in deinem Code so umsetzt, wie vorgesehen, bekommst du auch eine etwas bessere Fehlermeldung, eine, die sich auf die Datenbank bezieht, nicht auf PHP – und brauchst möglicherweise hier nicht mehr auf Antwort warten.

    1. Liebe Mitdenker,
      liebe Wissende,
      liebe Neugierige,

      ja!

      Schau dir das erste Beispiel von mysql_query(). Wenn du das in deinem Code so umsetzt, wie vorgesehen, bekommst du auch eine etwas bessere Fehlermeldung, eine, die sich auf die Datenbank bezieht, nicht auf PHP – und brauchst möglicherweise hier nicht mehr auf Antwort warten.

      Dieses Mal bekommst Du den Punkt von mir. Bei "mail()" gibts aber dafür dicken Abzug!

      Spirituelle Grüße
      Euer Robert

      --
      Möge der Forumsgeist wiederbelebt werden!
    2. Hallo!

      Statt auf den SQL-Fehler einzugehen, weise ich mal dezent darauf hin, dass du ganz offensichtlich die Fehlermeldungen der Datenbank ignorierst. Oder warum übergibst du mysql_fetch_assoc() den Fehler von mysql_query()? Damit kann erstere Funktion logischerweise nichts anfangen, woraufhin PHP dir obigen Fehler vor die Füße wirft.

      Lasse die Fehlermeldung nun ausgeben. Komischerweise gibt es aber nun garkeinen Fehler, sondern das Script funktioniert wie beschrieben. Kann aktuell nicht mehr nachvollziehen, woran es lag.

      Schau dir das erste Beispiel von mysql_query(). Wenn du das in deinem Code so umsetzt, wie vorgesehen, bekommst du auch eine etwas bessere Fehlermeldung, eine, die sich auf die Datenbank bezieht, nicht auf PHP – und brauchst möglicherweise hier nicht mehr auf Antwort warten.

      Vielen Dank für deine Antwort und den Hinweis und den Link.

      Freundliche Grüße
      Alex

  2. Liebe Mitdenker,
    liebe Wissende,
    liebe Neugierige,

    ja!

    Mein Versuch:

    "SELECT MAX(punkte) AS max_punkte, MAX(zeit) AS max_zeit, MAX(punkte/zeit) AS max_ppz FROM mytable;"

      
    Bisschen ulkige Vorstellung, eine Punktezahl durch 2015 nach Jesus zu teilen.  
      
    Wie wäre es, nicht durch eine "absolute" Zeitangabe, sondert durch eine Zeitspanne (Anzalhl Zeiteinheiten) zu teilen. Nennt sich auch "delta t" ;-)  
      
      
      
    Spirituelle Grüße  
    Euer Robert
    
    -- 
    Möge der Forumsgeist wiederbelebt werden!
    
    1. Tach!

      "SELECT MAX(punkte) AS max_punkte, MAX(zeit) AS max_zeit, MAX(punkte/zeit) AS max_ppz FROM mytable;"
      Bisschen ulkige Vorstellung, eine Punktezahl durch 2015 nach Jesus zu teilen.

      Ich kann dein Argument nicht nachvollziehen. Hab ich überlesen, dass zeit vom Typ DATE(TIME) sei?

      dedlfix.

      1. Liebe Mitdenker,
        liebe Wissende,
        liebe Neugierige,

        ja!

        Tach!

        "SELECT MAX(punkte) AS max_punkte, MAX(zeit) AS max_zeit, MAX(punkte/zeit) AS max_ppz FROM mytable;"
        Bisschen ulkige Vorstellung, eine Punktezahl durch 2015 nach Jesus zu teilen.

        Ich kann dein Argument nicht nachvollziehen. Hab ich überlesen, dass zeit vom Typ DATE(TIME) sei?

        Ich habe das einfach mal geraten und musste über die Vorstellung mit "2015 nach Jesus" grinsen. Immerhin hat der ja Brot und Wein geteilt mit seinen Anhängern :-)

        Woher sollte sonst die (unterdrückte) Fehlermeldung kommen, wenn es vorher funktioniert hat?

        Spirituelle Grüße
        Euer Robert

        --
        Möge der Forumsgeist wiederbelebt werden!