Gesucht wird: Datum der letzten geänderten Orders

Thema wurde von Manni_HB, 7. Dezember 2017 erstellt.

  1. Manni_HB
    Manni_HB G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Kann ich das Ding "..\_samples\OrderWriteService\overload_example_order_write_service.inc.php" umbauen um o.g. Ziel zu erreichen?
    (Ja/Nein wäre a´bisserl zu wenig)

    Wunschziel:
    Das Datum in eine Tabelle schreiben (insert) - diese wird zu einem späteren Zeitpunkt von einem eigenen Script ausgewertet* und wieder geleert.

    *) Schlussendlich brauche ich das Datum, das am weitesten vom aktuellen Datum entfernt ist, an dem an einer "order" Bestell-Status oder Berechnungen geändert wurden.


    Für zielführende Tipps, bereits jetzt besten Dank!
     
  2. Manni_HB
    Manni_HB G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    :( :(
     
  3. Kai Stejuhn
    Kai Stejuhn Beta-Held
    Registriert seit:
    26. September 2014
    Beiträge:
    1.454
    Danke erhalten:
    743
    Danke vergeben:
    92
    Kannst du nicht "last_modified" direkt aus der "orders" nehmen?
     
  4. Manni_HB
    Manni_HB G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Wird bei Änderungen (Summen usw.) an der Bestellung leider nicht aktualisert ... und bei "orders" > 300.000 auch nicht soooo optimal.
     
  5. Kai Stejuhn
    Kai Stejuhn Beta-Held
    Registriert seit:
    26. September 2014
    Beiträge:
    1.454
    Danke erhalten:
    743
    Danke vergeben:
    92
    Okay, dann ist das also nur eine fast letzte Änderung ;)
     
  6. Dennis (MotivMonster.de)
    Dennis (MotivMonster.de) G-WARD 2013/14/15/16
    Registriert seit:
    22. September 2011
    Beiträge:
    31.303
    Danke erhalten:
    6.268
    Danke vergeben:
    1.118
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    Letzte Status Änderung bringt dir dann ja auch nix,
    evtl. musst ne Funktion anhängen die bei änderungen was in ne tabelle für dich schreibt
     
  7. Anonymous
    Anonymous Administrator
    Mitarbeiter
    Registriert seit:
    26. April 2011
    Beiträge:
    1.954
    Danke erhalten:
    1.588
    Danke vergeben:
    339
    Hi,

    es gibt die orders_status_history, wo das Datum der letzen Änderung für den Bestellstatus steht. Dann gibt es noch in der orders das Datum wann die letze Änderung an Bestellung durchgeführt wurde. Hier könnte man aus beiden eine Abfrage basteln der dir immer das jüngere Datum zurückliefert.

    Beispiel:

    Code:
    SELECT
                 CASE
                      WHEN last_modified > date_added
                         THEN last_modified
                      ELSE date_added
                 END AS datum FROM orders, orders_status_history
     
  8. Manni_HB
    Manni_HB G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Hallo Till,
    das führt mich nicht wirklich zum gewünschten Ziel.

    Beispiel:
    Wenn am 11.12. die "orders" vom 01.12. geändert wurde, brauche ich den "01.12" nicht den "11.12" ... usw.
    Außerdem geht´s hier mSek ... deshalb die Idee, dass datt o.g Overload das Datum mal eben in eine gesonderte Tabelle schreibt und ich mir nur bei Bedarf das älteste Datum auslese.
     
  9. Anonymous
    Anonymous Administrator
    Mitarbeiter
    Registriert seit:
    26. April 2011
    Beiträge:
    1.954
    Danke erhalten:
    1.588
    Danke vergeben:
    339
    @Manfred Einfach die Abfrage oben umdrehen, ;)

    Code:
    SELECT
                 CASE
                      WHEN last_modified < date_added
                         THEN last_modified
                      ELSE date_added
                 END AS datum FROM orders, orders_status_history
     
  10. Anonymous
    Anonymous Erfahrener Benutzer
    Mitarbeiter
    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.749
    Danke vergeben:
    137
    Wenn ich das richtig verstehe, geht es um das date_purchased derjenigen Bestellungen, die zuletzt geändert wurden … ?!

    @Manfred, ignoriere mal komplett die Datenstrukturen und beschreibe einfach in Prosa das Problem, das du zu lösen versuchst.
     
  11. Manni_HB
    Manni_HB G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    #11 Manni_HB, 11. Dezember 2017
    Zuletzt bearbeitet: 11. Dezember 2017
    Der bringt endlos
    Das verstehst Du absolut richtig!

    Noch ebbes genauer: Im Verlauf eines/mehrerer Admin-Arbeitstage wird es eine "Liste" geben, von "date_purchased" der geänderten/bearbeiten Orders.

    Mein Script braucht beim 1.Start das "date_purchased", dass vom aktuellem Datum (heute) am Weitesten entfernst ist - also datt Älteste oder Kleinste.
     
  12. Anonymous
    Anonymous Administrator
    Mitarbeiter
    Registriert seit:
    26. April 2011
    Beiträge:
    1.954
    Danke erhalten:
    1.588
    Danke vergeben:
    339
    @Manfred Kannst du das bitte noch mal anders beschreiben. Was ist dein Ziel? Was möchtest du genau machen. Am besten erzählst du uns ganz genau was du vorhast. Wir können dir noch nicht ganz folgen.
     
  13. Manni_HB
    Manni_HB G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Also .. mal anders rum:

    Dieses ominöse Statistik-Modul speichert in einer eigenen Tabelle Summen, die u.a. aus der "orders" gebildet werden.
    Beim Start diese Modul wird erkannt, dass die letzte Aktualisierung der "orders" von der letzten Aktualisierung meiner Tabelle abweicht => Handlungsbedarf!

    Bis jetzt wird dann die ganze "orders" gelesen und die Daten in meiner Tabelle neu geschrieben.
    Bis 100.000 "orders" ist das in 2-3Sek gelaufen - bei "Orders" > 300.000 dauert es mit ca. 5Sek mir a´bisserl zu lange.

    Inzwischen werden im normalen Admin-Alltag zahlreiche "orders" bearbeitet z.B. Änderungen der Bestell-Status usw.

    Wenn ich also wüsste, <jetzt wird´s wieder schwierig> welches das älteste Datum (date_purchased) einer bearbeiteten "orders" ist, kann ich dort einsteigen (die Routine ist vorhanden) und muss nicht die gesamte Orders durchwühlen.
     
  14. Dennis (MotivMonster.de)
    Dennis (MotivMonster.de) G-WARD 2013/14/15/16
    Registriert seit:
    22. September 2011
    Beiträge:
    31.303
    Danke erhalten:
    6.268
    Danke vergeben:
    1.118
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    Du suchst quasi die älteste Bestellung die an einem Tag bearbeitet wurde.
    Sprich wenn ich heute alles von Gestern und wegen Geldeingang eine von Anfang Dezember bearbeite und versende dann willst du das Datum der Bestellung Anfang dezember wissen, damit du ab da alles neu berechnen lassen kannst.

    Und wie berechnest du oder speicherst du das davor gewesene? Fasst du da z.B. Monatsweise schon zusammen und würdest dann nur ab dem Monat der ältesten Bestellung neu berechnen lassen.

    speicher doch einfach bei welcher ID gerade der auto-dingsbums in der status History Tabelle steht und dann weißt ab wo neue Änderungen dazu kamen und bei welchen bestellungen. Dann hast die ganzen IDs und lässt die neu berechnen.
     
  15. Anonymous
    Anonymous Administrator
    Mitarbeiter
    Registriert seit:
    26. April 2011
    Beiträge:
    1.954
    Danke erhalten:
    1.588
    Danke vergeben:
    339
    @Manfred Warum so kompliziert. Kopier doch einfach jedes mal alle Daten neu, mit nur einem SQL Befehl, das geht schnell und du musst keine PHP Abfragen basteln die das Auslesen der MySQL Daten blockieren. Denn solange das PHP läuft wartet der SQL und hat nichts zu tun, bis PHP mit dem Verarbeiten der Daten fertrig ist.

    Code:
    INSERT INTO mystatistic (SELECT value FROM orders_total WHERE ot_class='ot_total');
    Wenn du in PHP eine Schleife hast um über alle Datensätze zu laufen, dann ist das langsamer als wenn du das über MySQL direkt machen lässt.
     
  16. Manni_HB
    Manni_HB G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
  17. Manni_HB
    Manni_HB G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Haargenau beschrieben => Respekt!!
     
  18. Anonymous
    Anonymous Erfahrener Benutzer
    Mitarbeiter
    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.749
    Danke vergeben:
    137
    Also im Prinzip

    Code:
    SELECT
        MIN(date_purchased)
    FROM
        orders
    WHERE
        orders.last_modified >= '2017-12-01'
    … wenn last_modified zuverlässig wäre.
     
  19. Manni_HB
    Manni_HB G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Das ist der 1. Schönheits-Fehler!
    Der 2. ist: Ich möchte nicht erst die "orders" und evtl. noch weitere Tabellen durchsuchen - ich möchte das ominöse "date_purchase" sofort aus eigener Tabelle auslesen!
    Deshalb die Eingangsfrage, ob datt Overload-Dingens das nebenbei erledigen kann.