Hallo ihr,
ich habe folgende Tabelle 'Prozesse':
| id | name | detail1 | detail2 | detail3 |
Man darf sich die Tabelle nicht wie eine Userliste eines Forums vorstellen. Es gibt insgesamt nur 5-6 Prozesse, diese tragen sich jedoch fortlaufend hintereinander immer wieder in die Tabelle ein - eben immer, wenn sie neue Details haben.
Die ID ist autoincrement und hat deswegen nichts mit der Identifikation der Prozesse zu tun.
Beispiel wie das aussehen könnte:
| 1 | Prozess 1 | ..... | ..... | ..... |
| 2 | Prozess 3 | ..... | ..... | ..... |
| 3 | Prozess 1 | ..... | ..... | ..... |
| 4 | Prozess 2 | ..... | ..... | ..... |
| 5 | Prozess 2 | ..... | ..... | ..... |
Ich suche jetzt eine Möglichkeit, wie ich an die Details des jeweils letzten Eintrags eines Prozesses komme.
Hintergrund ist der, das ein Prozess in einem ungünstigen Fall 2 mal hintereinander die gleichen Details besitzt. Kommt das vor, so soll das 2. Mal gar nicht erst in die Tabelle eingetragen werden, da möchte ich schon zuvor in PHP filtern. Dafür brauche ich vermutlich, wie erwähnt, aber die Details des zuletzt eingetragenen, GLEICHNAMIGEN Prozesses, um abzugleichen ob identisch.
Klar, für jeden Prozess ne eigene Tabelle, das wäre einfacher gewesen. Aber es kann sein, dass die Prozessanzahl in Zukunft schwankt (neue kommen hinzu, alte "sterben"), da ist alles in einer Tabelle schöner.
Am liebsten hätte ich das Auslesen der jeweils letzten Details eines Prozesses in einem Query, aber habe nur Workarounds gefunden bis jetzt.
Mit
kann ich rausfinden, welche ID der jeweils letzte Eintrag eines Prozesses hat. Aber nun muss ich mit dieser ID wieder einen Query starten, um an die Details zu kommen... und in der Zwischenzeit kann sich in der DB schon wieder was getan haben.
Detail1 ist übrigens ein Timestamp, aber leider nur auf eine Minute genau. In einer Minute kann Prozess X aber 10-15 neue Einträge gemacht haben, von dem her wahrscheinlich nutzlos...
Danke und Grüße
ich habe folgende Tabelle 'Prozesse':
| id | name | detail1 | detail2 | detail3 |
Man darf sich die Tabelle nicht wie eine Userliste eines Forums vorstellen. Es gibt insgesamt nur 5-6 Prozesse, diese tragen sich jedoch fortlaufend hintereinander immer wieder in die Tabelle ein - eben immer, wenn sie neue Details haben.
Die ID ist autoincrement und hat deswegen nichts mit der Identifikation der Prozesse zu tun.
Beispiel wie das aussehen könnte:
| 1 | Prozess 1 | ..... | ..... | ..... |
| 2 | Prozess 3 | ..... | ..... | ..... |
| 3 | Prozess 1 | ..... | ..... | ..... |
| 4 | Prozess 2 | ..... | ..... | ..... |
| 5 | Prozess 2 | ..... | ..... | ..... |
Ich suche jetzt eine Möglichkeit, wie ich an die Details des jeweils letzten Eintrags eines Prozesses komme.
Hintergrund ist der, das ein Prozess in einem ungünstigen Fall 2 mal hintereinander die gleichen Details besitzt. Kommt das vor, so soll das 2. Mal gar nicht erst in die Tabelle eingetragen werden, da möchte ich schon zuvor in PHP filtern. Dafür brauche ich vermutlich, wie erwähnt, aber die Details des zuletzt eingetragenen, GLEICHNAMIGEN Prozesses, um abzugleichen ob identisch.
Klar, für jeden Prozess ne eigene Tabelle, das wäre einfacher gewesen. Aber es kann sein, dass die Prozessanzahl in Zukunft schwankt (neue kommen hinzu, alte "sterben"), da ist alles in einer Tabelle schöner.
Am liebsten hätte ich das Auslesen der jeweils letzten Details eines Prozesses in einem Query, aber habe nur Workarounds gefunden bis jetzt.
Mit
PHP-Code:
$query = "SELECT name, MAX(id) FROM processes GROUP BY name";
Detail1 ist übrigens ein Timestamp, aber leider nur auf eine Minute genau. In einer Minute kann Prozess X aber 10-15 neue Einträge gemacht haben, von dem her wahrscheinlich nutzlos...
Danke und Grüße
Kommentar