| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||
| Gast
Beiträge: n/a
| Zitat:
Sagen wir, in den letzten 5 Minuten sind 4 Orders eingegangen und diese haben in der Status_History als letzten Wert: order1 status = 5 (bezahlt) order2 status = 0 (offen) order3 status = 6 (PayPal wartend) order4 status = 5 (bezahlt) Ich möchte jetzt nur die Orders 1 und 4 als Ergebnis haben. Die Stati sind leider nicht dem Bestellablauf logisch aufteigend vergeben, weshalb ich über den Timestamp den letzten suchen muss. EDIT: Mir wäre auch geholfen, wenn ich diese Abfrage nur auf die Tabelle orders_status_history hinbekommen würde. Dann könnte ich die eigentlichen Orders mit einer zweiten Abfrage innerhalb einer Schleife holen. Also aus der Tabelle: Code: ID ORD STAT UPDATETIME 877 227 1 2011-11-06 14:02:59 878 227 4 2011-11-06 14:03:04 879 227 5 2011-11-06 14:03:08 880 228 1 2011-11-06 14:03:10 881 228 0 2011-11-06 14:03:24 882 229 1 2011-11-06 14:04:10 883 229 5 2011-11-06 14:04:24 884 229 8 2011-11-06 14:04:34 885 230 1 2011-11-06 14:05:24 886 230 5 2011-11-06 14:05:34 Geändert von Igotcha (09.11.2011 um 19:37 Uhr). | |
| | ||
| Erfahrener Benutzer Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse: Anfänger ![]() | Code: ID ORD STAT UPDATETIME 877 227 1 2011-11-06 14:02:59 878 227 4 2011-11-06 14:03:04 879 227 5 2011-11-06 14:03:08 880 228 1 2011-11-06 14:03:10 881 228 0 2011-11-06 14:03:24 882 229 1 2011-11-06 14:04:10 883 229 5 2011-11-06 14:04:24 884 229 8 2011-11-06 14:04:34 885 230 1 2011-11-06 14:05:24 886 230 5 2011-11-06 14:05:34 Zitat:
Bei 228 ist das Max = 1 Bei 229 ist das Max = 8 Bei 230 ist das Max = 5 Habe ich Dich falsch verstanden? Suchst Du nicht alle, bei denen das Maximum = 5 ist? | |
| |
| | ||
| Gast
Beiträge: n/a
| Zitat:
Ich möchte die Orders haben, wo der letzte Status, also der Status mit dem höchsten Timestamp einer Order = 5 ist: ID ORD STAT UPDATETIME 877 227 1 2011-11-06 14:02:59 878 227 4 2011-11-06 14:03:04 879 227 5 2011-11-06 14:03:08 880 228 1 2011-11-06 14:03:10 881 228 0 2011-11-06 14:03:24 882 229 1 2011-11-06 14:04:10 883 229 6 2011-11-06 14:04:18 884 229 5 2011-11-06 14:04:24 885 229 8 2011-11-06 14:04:34 886 230 1 2011-11-06 14:05:24 886 230 5 2011-11-06 14:05:34 Das ist nur bei der Order 227 und 230 der Fall. Order 228 hat gar keinen Eintrag mit Status = 5 und der letzte Status bei Order 229 ist 8. Der MAX status wäre auch 8 und nicht 5, weshalb ich MAX nicht verwenden kann. Ich formulieren die Abfrage mal pseudo: "Suche mir die Order-IDs raus, bei denen der letzte Eintrag (=höchster Timestamp) einer Order(-ID) einen Wert "status = 5" hat." Geändert von Igotcha (09.11.2011 um 22:18 Uhr). | |
| | ||
| Moderator¹ Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
__________________ RGB is totally confusing - I mean, at least #C0FFEE should be brown, right? | |
| |
| | ||
| Gast
Beiträge: n/a
| Zitat:
Code: SELECT s1.orders_id FROM orders_status_history s1 JOIN ( SELECT orders_id, orders_status_id, MAX(date_added) AS lastadd FROM orders_status_history GROUP BY orders_id) AS s2 ON s1.orders_id= s2.orders_id AND s1.orders_status_id = s2.orders_status_id WHERE s1.orders_status_id=5 Ergebnis: 1 Treffer für eine alte Bestellung mit folgenden Daten (das Ergebnis wäre in diesem Fall "falsch"): orders_status_history_id orders_id orders_status_id date_added 738 193 5 2011-10-08 17:56:30 736 193 1 2011-10-08 17:56:13 737 193 6 2011-10-08 17:56:17 739 193 8 2011-10-08 17:58:10 Das wäre dann aber eine Order, die ich nicht haben möchte, da diese abgeschlossen ist Und warum schmeisst er mir diese eine raus? Alle komplettierten Orders (mit letztem Status = 8 ) haben den selben Aufbau. Und setze ich die WHERE Klausel testweise auf 8 (=abgeschlossen) kommen 8 Treffer... eigentlich müssten dann ja ALLE abgeschlossenen Bestellungen angezeigt werden (auch dieses Ergebnis wäre "falsch"). 8 10 8 63 160 186 192 Zudem kommt die Bestellung 8 doppelt vor. Ich habe mal einen csv-Auszug der Tabelle drangehängt. Hier sind aber aktuell alle Bestellungen abgeschlossen (letzter Status = 8 ). Einfach bei einigen Bestellungen die Zeile mit dem Status = 8 entfernen. Geändert von Igotcha (09.11.2011 um 23:23 Uhr). | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Abfrage von einer Abfrage | Datenbanken | 5 | 27.01.2011 23:31 | |
| False Abfrage und SQL hängt sich auf | marc77 | Datenbanken | 4 | 22.11.2010 14:57 |
| [Erledigt] Abfrage aus mehreren Tabellen | HiddenX | Datenbanken | 6 | 24.08.2010 14:45 |
| [Erledigt] Brauche Hilfe bei einer If Abfrage | TrueEdge | PHP Tipps 2010 | 7 | 22.04.2010 15:50 |
| Sache der Abfrage? Bitte um Hilfe ! | idontknow | Datenbanken | 4 | 20.04.2010 15:35 |
| [Erledigt] hilfe bei db Abfrage mit Kathegorien | hups | Datenbanken | 4 | 09.12.2009 22:45 |
| MySQL - Fehler in einfacher Abfrage | oden | Datenbanken | 11 | 03.01.2009 20:03 |
| Hilfe bei SQL Abfrage | Cyberbob_at_tot | Datenbanken | 1 | 29.11.2005 18:56 |
| [Erledigt] mysql abfrage - Hilfe | Datenbanken | 2 | 25.10.2005 20:44 | |
| Abfrage von mehreren Werten mit Hilfe von LIKE? | PHP Tipps 2005-2 | 4 | 12.09.2005 19:19 | |
| [Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert | Datenbanken | 2 | 08.09.2005 11:59 | |
| hilfe bei abfrage | PHP Tipps 2005-2 | 15 | 15.08.2005 20:47 | |
| brauche hilfe beim DB abfrage | Cyrus | PHP Tipps 2005-2 | 5 | 14.08.2005 20:07 |
| Hilfe bzgl. Datenbank abfrage | PHP Tipps 2004 | 5 | 24.06.2004 18:21 | |