Access/Sql: Abfrage wenn gleicher Absender eine Nachricht innerhalb einer gewissen Zeit sendet

Peter1980

Grünschnabel
Hallo zusammen,

bin neu hier, und suche etwas Hilfe.
Ich habe eine Datenbank welche Nachrichten mit Absender, Text, Zeitstempel empfaengt.
Nun habe ich schon eine Abfrage welche mir die Texte nach einem Suchstring durchsucht und die Ergebnisse nach Datum sortiert.
Ich moechte die Abfrage jetzt so erweitern, dass ich nur Datensaetze angezeigt bekomme, wenn der Absender eine Nachricht die den gleichen Suchstring enthaelt schon z.B. 20 Sec zuvor geschickt hat.

z.B.
4/11/2015 4:50:15 Connection between PLC and xxxxxxxxx terminated. Absender1
4/11/2015 4:50:18 Connection between PLC and xxxxxxxxx terminated. Absender2
4/11/2015 4:50:20 Connection between PLC and xxxxxxxxx terminated. Absender3

4/11/2015 4:50:29 Connection between PLC and xxxxxxxxx restored. Absender1


Bisher frage ich die Daten so ab:

SELECT LogDaten.DateTime, LogDaten.Absendername, LogDaten.Message
FROM LogDaten
WHERE (((LogDaten.Message) Like "*Connection between PLC and*"))
ORDER BY LogDaten.DateTime;


Als Ergebnis der neuen Abfrage soll quasi in etwas so etwas rauskommen:
4/11/2015 4:50:15 Connection between PLC and xxxxxxxxx terminated. Absender1
4/11/2015 4:50:29 Connection between PLC and xxxxxxxxx restored. Absender1


Das klingt evtl. leichter als es Ist.
Vielen Dank schon mal allen die mir versuchen zu helfen.
Ich habe schon mal in Richtung DateDiff nachgelesen, aber mir fehlen eigentlich die Basics noch im SQL
wie ich verschiedene Bedingungen verknuepfen kann.
Also Message enthaelt Searchstring, Absendername = Absendername, und Datediff <=20 Sec
 
MS Access. Ich würde versuchen mittels Subquery zu überprüfen, ob 20 Sekunden vorher bereits ein Eintrag existiert. Wenn ja, dann nimmt man ihn nicht.
SQL:
SELECT
    t.DateTime,
    t.Absendername,
    t.Message
FROM LogDaten AS t
WHERE
    t.message LIKE 'ABC*'
    0 IN (
        SELECT COUNT(c.*)
        FROM logdaten AS c
        WHERE
            t.message LIKE 'ABC*'
            AND c.datetime >= DATEADD('s', -20, t.datetime
            AND c.datetime < t.datetime
    )
 
Zurück