Ankündigung

Einklappen
Keine Ankündigung bisher.

Höchsten Wert einer Spalte mit den Namen "auto_increment" auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Höchsten Wert einer Spalte mit den Namen "auto_increment" auslesen

    Ich hänge gerade bei folgendem Problem fest:

    In der Spalte "order_number" hat es mehrere Zeilen mit der gewünschten Bestellnummer, aber ich möchte nur die Zeile mit der höchsten Zahl in der Spalte "auto_increment" auslesen)


    Tabelle "order":
    order_number auto_increment order_id
    1000321 10 11
    1000321 11 12
    1000321 12 23

    Im phpMyAdmin mache ich folgende Abfrage um das gewünschte Ergebnis zu bekommen:


    select *
    from `order`
    where `order_number` = "1000321"
    and `auto_increment` = (select max(`auto_increment`) from `order` where `order_number` = "1000321")


    Nur wenn ich das ganze in mein Script einbaue, dann funktioniert die Abfrage nicht:


    $sql = "
    SELECT * FROM `order`
    WHERE `order`.`auto_increment` = (select max(`order`.`auto_increment`) from `order` where `order_number` = 1000321)";


    Wo liegt mein Fehler?

  • CPCoder
    antwortet
    jonas3344 hat dir doch schon die Loesung in Beitrag #2 geschrieben, wo ist nun das Problem?

    Einen Kommentar schreiben:


  • Ampatos
    antwortet
    Ist so gegeben und ich kanns nicht ändern.

    Hier nochmal abgeändert das Beispiel:

    Tabelle order
    order_number auto_increment Bemerkung
    10001 10 ursprüngliche Bestellung 10001
    10002 11 neue Bestellung
    10001 12 geänderte Bestellung 10001
    10003 13 neue Bestellung
    10004 14 neue Bestellung
    Sobald eine Bestellung geändert wurde, z.b. Artikelanzahl erhöht, wird eine neue Zeile in der Tabelle mit der gleichen "order_number", aber fortlaufender Zahl in der Spalte "auto_increment" angelegt.

    Und ich darf nur noch die abgeänderte Zeile zu der Bestellung auslesen (in dem Beispiel also nur die fettgedruckte Zeile).


    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    Zitat von Ampatos Beitrag anzeigen
    Wenn eine Bestellung geändert wird, dann erhält wird in der Tabelle `order` eine neue Zeile angelegt und [COLOR=#008000]`auto_increment` um eines hochgesetzt.
    Ja, keine schlaue Lösung. Schlauer wäre, da einen timestamp automatisch (z.B. via trigger) zu setzen. Aber man kann natürlich auch dumm die Tabelle sperren, den nächsten Wert errechnen und speichern - und hoffen, daß man alleine am System arbeitet.

    Einen Kommentar schreiben:


  • Ampatos
    antwortet
    Wenn eine Bestellung geändert wird, dann erhält wird in der Tabelle `order` eine neue Zeile angelegt und `auto_increment` um eines hochgesetzt.

    Um den aktuell Stand der Bestellung auszulesen, darf ich eben nur die Zeile mit dem höchsten Wert in der Spalte `auto_increment` auslesen.

    Einen Kommentar schreiben:


  • jonas3344
    antwortet
    Weshalb nicht:

    Code:
    SELECT order_number, auto_increment, order_id FROM order WHERE order_number = 1000321 ORDER BY auto_increment DESC LIMIT 1
    Den Sinn dahinter muss man nicht verstehen, oder?

    Einen Kommentar schreiben:

Lädt...
X