tsunami
Goto Top

Abfrage letzter Status

Hallo zusammen,
ich hänge mal wieder bei einer Abfrage. Zum Problem:
Ich habe ein Ticketsystem. Dabei soll der aktuelle Status quasi weitergereicht werden und imme nur der aktuelle Status angezeigt werden.
Simples Beispiel:
A meldet an B Kein Ticht im WC -> Ticket 1 erscheint bei B.Status für B "in Arbeit"
B geht hin tauscht die Lampe und meldet an A Lampe getauscht erledigt. Status für B erledigt, Status für A bitte quittieren.
Wenn quittiert, verschwindet es aus der Liste. Auftauchen sollen nur relevante von der eingeloggten Abteilung relevanten Tickets.

Da es irgendwann auch eine Historienfunktion geben soll, kann ich kein Update fahren, sondern muss jeden Vorgang abspeichern.
Das sieht also wie folgt aus.

Neuerfassung Status A (inArbeit)
insert into tickets(datum, beschreibung,nummer,abteilungs_id,status_id,timestamp) values(....)

Ticketupdate zb erledigt Status E (erledigt)
insert into tickets(datum, beschreibung,nummer,abteilungs_id,status_id,timestamp) values(....)

und

Ticketupdate Status A (inArbeit) für den Melder
insert into tickets(datum, beschreibung,nummer,abteilungs_id,status_id,timestamp) values(....)


Ticket quittierung Status q (quittiert)
insert into tickets(datum, beschreibung,nummer,abteilungs_id,status_id,timestamp) values(....)

Sobald das Ganze quittiert ist, soll es nicht mehr angezeigt werden.

Ich habe für die Übersicht folgende Abfrage konstruiert:

 $sql_statischer_part=sprintf("SELECT  
    a.name as melder,
    t.ticketnummer,t.erstellungsdatum,t.beschreibung as ticketname,t.beschreibung,t.status_id
FROM
    abteilungen a
    INNER JOIN tickets t
        ON a.id = t.absender_id
    INNER JOIN (
            SELECT
                absender_id,
                MAX(timestamp) AS max_datum
            FROM
                tickets
            GROUP BY
                absender_id
        ) AS akt_t
        ON t.absender_id = akt_t.absender_id
        AND t.timestamp = akt_t.max_datum and t.empfaenger_id=%s and status_id=1 ",mysql_real_escape_string($_SESSION['abteilung_id']));   

Nur so zeigt der mir den letzten Status mit Status A an und nicht den letzten Status wenn in Arbeit. Was ich also bräuchte, ist "Zeige an wenn letzter Status (max(timestamp)) und Status_id=A.
Also wenn Ticket 201611 auf Quittierung wartet soll es angezeigt werden, wenn es quittiert ist , nicht. Gleiches beim Ausführenden. Wenn der letzte Status in Arbeit ist, zeige es an, wenn es erledigt ist, nicht. Ich hoffe, es war verständlich?

Weil so zeigt er mir nur den letzten Status (max(timestamp)) an, wo der Status =A ist.
Vielen Dank für Anregungen.
tsunami
ps mysqlDatenbank

Content-Key: 313410

Url: https://administrator.de/contentid/313410

Ausgedruckt am: 19.03.2024 um 06:03 Uhr