1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

php mysql maximum

    • Frage
  • IT-Max
  • 14. Februar 2006 um 23:46
  • Unerledigt
  • IT-Max
    4
    IT-Max
    Mitglied
    Punkte
    155
    Beiträge
    19
    • 14. Februar 2006 um 23:46
    • #1

    folgende situation:
    ich habe eine tabelle mit mehreren spalten und ich will aus einer dieser spalten den maximalen numerischen wert auslesen.

    zur verdeutlichung:
    2
    5
    4
    6
    8
    ausgelesen soll der wert 8 werden.
    wie kann ich das mit php-mysql realisieren?

    :thumb: Ich bin positiv eingestellt, sogar meine Blutgruppe ist positiv!

  • KeinWunder
    7
    KeinWunder
    Mitglied
    Punkte
    490
    Beiträge
    90
    • 14. Februar 2006 um 23:51
    • #2

    du kannst das in SQL machen: max(spalten_name) holt dir den höchsten wert heraus

    Four stages of acceptance:
    1.) this is worthless nonsense
    2.) this is interesting, but perverse, point of view
    3.) this is true, but quite unimportant
    4.) I alwas said so
    J.B.S. Haldane

  • bimbo
    15
    bimbo
    Mitglied
    Reaktionen
    15
    Punkte
    2.320
    Beiträge
    390
    • 15. Februar 2006 um 08:45
    • #3

    die query schaut dann so aus:

    SQL
    SELECT MAX(spalte) FROM tabelle;

    LVA Erfahrungsberichte: http://vowi.fsinf.at/

  • MarvinTheRobot
    26
    MarvinTheRobot
    Mitglied
    Reaktionen
    53
    Punkte
    7.308
    Beiträge
    1.368
    • 15. Februar 2006 um 08:48
    • #4

    hm wenn der wert in einer einzelnen spalte steht.... würd auch ORDER BY 'spalte' DESC gehn. der erste wert is deiner... aber max is natürlich hübscher..... aber nicht vergessen, bei aggregatfunktionen immer ein GROUP BY verwenden, dass hätt mich fast die positive Note bei Datenbanksysteme gekostet. :) *gggg*

    lg, Phil.

    Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders!
    http://www.chuckbronson.net/

  • IT-Max
    4
    IT-Max
    Mitglied
    Punkte
    155
    Beiträge
    19
    • 15. Februar 2006 um 15:04
    • #5

    es stehen die werte 0 und 1 in der spalte
    dies sind rechnungsnummern

    der code den ich verwende:
    $max_order_number = tep_db_query("select max(order_number) from " . TABLE_ORDERS . " GROUP BY order_number");
    while($zeile = @ mysql_fetch_array($max_order_number))
    {
    echo "<b>Rechnungsnummer:</b> " . $zeile['order_number'];
    }

    ergebnis:
    Rechnungsnummer:
    Rechnungsnummer:

    was ich haben will:
    1

    warum funkt das nicht?

    :thumb: Ich bin positiv eingestellt, sogar meine Blutgruppe ist positiv!

  • lerod
    13
    lerod
    Mitglied
    Reaktionen
    5
    Punkte
    1.620
    Beiträge
    315
    • 15. Februar 2006 um 15:13
    • #6

    ich würde mal mit print_r nachsehen, welche werte mit welchen spaltennamen von der db geliefert werden. ich würde nämlich darauf tippen, daß sie spalte max(spalte) heißt und nicht order_number.

    lg

  • Paulchen
    1
    Paulchen
    Gast
    • 15. Februar 2006 um 16:23
    • #7
    Zitat von IT-Max

    der code den ich verwende:

    PHP
    $max_order_number = tep_db_query("select max(order_number) from " . TABLE_ORDERS . " GROUP BY order_number");

    warum gruppierst du nach ordner_number? das bedeutet ja, dass du dein abfrageergebnis in gruppen gleichen wertes von ordner_number einteilst... die max-aggregatfunktion ruft dann von der jeweiligen gruppe den größten wert von ordner_number ab, das ist in der gruppe mit ordner_number=0 eben 0 und mit ordner_number=1 eben 1.

    ergo: kübel die group by-klausel, und probier es nochmal.

  • IT-Max
    4
    IT-Max
    Mitglied
    Punkte
    155
    Beiträge
    19
    • 15. Februar 2006 um 16:48
    • #8

    hab die group by klausel gekübelt.

    ist ergebnis:
    Rechnungsnummer:

    soll Ergebnis:
    Rechnungsnummer: 1

    das ist der lösung schon ein bißchen näher aber es is doch noch nicht ganz die Lösung.
    werd noch verrückt!

    :thumb: Ich bin positiv eingestellt, sogar meine Blutgruppe ist positiv!

  • zwutschkerl
    6
    zwutschkerl
    Mitglied
    Punkte
    365
    Beiträge
    71
    • 15. Februar 2006 um 17:00
    • #9
    Zitat von IT-Max
    Code
    select max(order_number) from ...
    
    
    ...
    
    
    echo "<b>Rechnungsnummer:</b> " . $zeile['order_number'];
    
    
    ...

    funkt das nicht?


    nein funkt wahrscheinlich nicht. Ob das Ergebnis der Aggragtsfunktion in einer Spalte namens "order_number" geliefert wird ist datenbankabhängig, aber wahrscheinlich ist es nicht.

    Lösung:

    Code
    SELEC MAX([I]<spaltenname>[/I]) [B]AS [I]<gewünschter Name>[/I][/B] FROM ...
    ...
    echo "<b>Rechnungsnummer:</b> " . $zeile["[I]<gewünschter Name>[/I]"];
  • Paulchen
    1
    Paulchen
    Gast
    • 15. Februar 2006 um 17:01
    • #10
    Zitat von IT-Max

    das ist der lösung schon ein bißchen näher aber es is doch noch nicht ganz die Lösung.

    look post #6

    schreib also entweder

    PHP
    $zeile['max(order_number)'];

    statt

    PHP
    $zeile['order_number'];


    oder

    PHP
    $max_order_number = tep_db_query("select max(order_number) as order_number from " . TABLE_ORDERS);

    statt

    PHP
    $max_order_number = tep_db_query("select max(order_number) from " . TABLE_ORDERS);
  • IT-Max
    4
    IT-Max
    Mitglied
    Punkte
    155
    Beiträge
    19
    • 15. Februar 2006 um 19:00
    • #11

    danke danke

    richtige lösung:
    $max_order_number = tep_db_query("select max(order_number) as order_number from " . TABLE_ORDERS);

    :thumb: Ich bin positiv eingestellt, sogar meine Blutgruppe ist positiv!

  • Paulchen
    1
    Paulchen
    Gast
    • 16. Februar 2006 um 12:04
    • #12
    Zitat von IT-Max

    $max_order_number = tep_db_query("select max(order_number) as order_number from " . TABLE_ORDERS);

    brauchst du nicht extra einzufärben, dazu gibts ein eigenes PHP-tag :p

  • IT-Max
    4
    IT-Max
    Mitglied
    Punkte
    155
    Beiträge
    19
    • 17. Februar 2006 um 19:24
    • #13

    leider steh ich schon wieder vor dem nächsten problem.

    $max_order_number = tep_db_query("select max(order_number) as order_number from " . TABLE_ORDERS);

    ich will jetzt zusätzlich zu der maximalen order_number auch die zugehörige order_id abrufen. das befindet sich also alles in einer zeile und sollte daher kein problem sein. wie kann ich das machen?

    :thumb: Ich bin positiv eingestellt, sogar meine Blutgruppe ist positiv!

  • Paulchen
    1
    Paulchen
    Gast
    • 18. Februar 2006 um 11:59
    • #14

    auf diese lösung ist das DBAI besonders stolz:

    Code
    select order_number, order_id from table_order where order_number>=all(select order_number from table_order)

    man beachte, dass das ergebnis mehrere datensätze umfasst, wenn die größte order_number mehrmals vorkommt.

    wenn du aber ein MySQL verwendest, das keine subqueries kann:

    Code
    select order_number, order_id from table_order order by order_number desc limit 0,1

    hat allerdings das problem, dass nur ein datensatz ausgegeben wird. du könntest mit hilfe von PHP zwei queries ausführen:

    PHP
    $result=mysql_query("select max(order_number) as order_number from ".TABLE_ORDERS);
    if(mysql_num_rows==1) {
        $line=mysql_fetch_array($result);
        $max_order_number=$line['order_number'];
        mysql_free_result($result);
    
    
        $result=mysql_query("select order_number, order_id from ".TABLE_ORDERS." where order_number=$max_order_number");
    }
  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung