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?

  • #2
    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?

    Kommentar


    • #3
      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.

      Kommentar


      • #4
        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.
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          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).


          Kommentar


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

            Kommentar

            Lädt...
            X