marcel1989
Goto Top

MYSQL Time +- 10 Sec

Hallo ich habe eine Tabelle die aus mehreren Zeilen besteht. Beispiel:
tabelle

Jetzt ist es so das diese 2 Datensätze zusammen gehören. Wie man sieht ist leider der eine Datensatz eine Sekunde zu spät gekommen.

Wie kann ich nun in Group by das lösen das er immer +- 2 Sekunden schaut und das dann als eine Zeile ausgibt?

Ich will halt am ende einen Wert stehen habe:

2018-07-04 07:59:35 27 104 99

und nicht wii auf dem vorhergehenden Bild.

Ich hab mich schon mit "GROUP BY (UNIX_TIMESTAMP(TimeString) + 5) DIV 10" Versucht. Nur führt das zu dem Ergebniss das die 2te Zeile komplett fehlt.

Danke für die hilfe im Voraus.

Gruß
Marcel

Content-ID: 387063

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

Ausgedruckt am: 25.11.2024 um 19:11 Uhr

Cenion
Lösung Cenion 20.09.2018 um 14:05:17 Uhr
Goto Top
Hi,

Stichwort "GROUP_CONCAT". Ermöglich die Ausgabe der einzelnen Werte aller gruppierten Datensätze.

Gruß
Cenion
Marcel1989
Marcel1989 20.09.2018 aktualisiert um 15:57:26 Uhr
Goto Top
Ok die Syntax versteh ich noch nicht...
Anstatt Group by nun Group_Concat (TimeString).
Ich glaube Group_Concat bringt mich hier nicht weiter.
Weil ich hab ja außer das Datum und die Uhrzeit bis zu den Minuten ja nichts gemeinsam.
Und ich weiß jetzt gerade nicht wie ich das verwenden soll um die Datensätze so zusammen zu fassen.

Über hilfe und vielleicht eventuell eine Aufklärung würde ich mich sehr freuen.

Gruß
Marcel

EDIT: es ist ja so bei meinen Daten ich hab ja dann mal 20 stück die von der Zeit her passen und dann bei 100000 Datensätze 4 stück dabei die sich mal um eine bis maximal 2 sekunden unterscheiden. Also kann ich nicht wie hier gedacht jede Zeile mit der nächsten verknüpfen da ja 20 Zeilen passen und ich die dann ja zu nicht passenden mache weil ich sie mit der darunter liegenden "zusammenführe". Wenn ich die GROUP_Concat richtig verstanden habe
wiesi200
Lösung wiesi200 20.09.2018 um 16:02:32 Uhr
Goto Top
Hallo,

als alternativ Idee, du könntest dir einen "Hilfsspalte" durch eine Unterabfrage basteln wo du die Uhrzeit rundest.
Wobei ich mir erst mal das Problem ansehen würde warum du 2 Schreiboperationen für einen Datensatz hast.
Cenion
Lösung Cenion 20.09.2018 um 16:19:50 Uhr
Goto Top
Ich glaub du hast es falsch verwendet, deine Group-By-Anweisung war in Ordnung.
Probier mal folgendes:

SELECT GROUP_CONCAT("",*SPALTE1*), GROUP_CONCAT("",*SPALTE2*), GROUP_CONCAT("",*SPALTE3*) FROM *TABELLE* GROUP BY (UNIX_TIMESTAMP(TimeString) + 5) DIV 10

Dies sollte genau dein Problem beheben. Falls eine Gruppierung stattfindet, werden die Werte der Datensätze genommen und zusammen ausgegeben, ansonsten die normalen Werte des einzelnen Datensatzes.
tabelle
ergebnis