Zwei Tabellen über naheliegenden Timestamp Joinen

GrafvonAdviller

Benutzer
Beiträge
12
Hallo zusammen,
Ich Versuche gerade eine Query zu schreiben die Tabelle Logfiles mit der TTNR aus der Tabelle TTNR anreichert.
Gejoint müssen beide Tabellen über die Felder Area,Line,Station werden.



Tabelle (Logfiles)

upload_2020-1-24_2-11-57.png

Tabelle(TTNR)
upload_2020-1-24_2-13-32.png

Versucht hab ich das ganze nun mit folgenden Querys...

SELECT a.*, b.TTNR
FROM Logfiles as a
JOIN TTNR AS b ON a.Area = b.Area AND a.Line = b.Line AND a.Station = b.Station AND a.Station = b.Station
WHERE b.Time_Stamp_Local = (SELECT MIN(bb.Time_Stamp_Local)
FROM TTNR as bb
WHERE bb.Time_Stamp_Local >= a.Start_Time_Local)

Ergebnis:
Nur eine einzige Zeile, diese ist aber (vieleicht auch zufällig) richtig zugeordnet

Und diese ...

SELECT DISTINCT a.*,
( SELECT TOP 1 TTNR
FROM TTNR as b
WHERE b.Time_Stamp_Local <= a.Start_Time_Local
ORDER BY b.Time_Stamp_Local DESC) as TTNR
FROM Logfiles AS a
INNER JOIN TTNR AS b ON a.Area = b.Area AND a.Line = b.Line AND a.Station = b.Station AND a.Station = b.Station

Ergebnis:
Sah auf den ersten Blick ganz gut aus, allerdings sind die TTNR nicht richtig zugeordnet
 
Werbung:
Warum 2x a.Station = b.Station? Das kann einmal weg.

Muss bei WHERE bb.Time_Stamp_Local >= a.Start_Time_Local eventuell nicht a.Start_Time_Local sondern b.Start_Time_Local rein? Klingt erstmal sinnvoller aber ich weiß auch nicht genau worauf du aus bist.

Der 2te Select scheint mir eher gruselig, das würde ich weg werfen. Selbst wenn es geht ist es unnötig unperformant.
 
Hallo,
Das mit dem 2x a.Station = b.Station war ein Kopierfehler, natürlich nur einmal.
Ich benötige die TTNR zum Massage_Titel und der Time_Stamp_Local ist der erste Moment wann die TTNR auftritt.
Jetzt würde ich über die ersten 7 Felder also Area-Tool_Poistion ist das Ganze verbunden.
Gibt es einen Eintrag in der Tabelle Logfile möchte ich anhand des Zeitstempels die TTNR des Events bestimmen. Deshalb der Versuch über die am nächsten aber größere Zeit der Tabelle TTNR daran zu kommen.

Nun hoffe ich man konnte einigermaßen verstehen was ich meine :)
 
Werbung:
Ne so ganz ist mir das nicht klar. Aufgrund der Tabellen-Schnipsel würde ich sagen die Beziehung zwischen den beiden Tabellen ist
TTNR 1 <-> n Logfiles
Jetzt würde ich über die ersten 7 Felder also Area-Tool_Poistion ist das Ganze verbunden.
Das ist kein Deutsch.
Gibt es einen Eintrag in der Tabelle Logfile möchte ich anhand des Zeitstempels die TTNR des Events bestimmen.
Ich glaube die TTNR ergibt sich aus dem Join deiner "ersten 7 Zeilen". Das würde heißen du kannst mit
Code:
SELECT l.*,t.TTNR
FROM Logfiles l
LEFT JOIN TTNR t
ON l.Area = t.Area
AND l.Line = t.Line
AND l.Station = t.Station
AND l.Station_Index = t.Station_Index
AND l.Function_Unit = t.Function_Unit
AND l.Working_Position = t.Working_Position
AND l.Tool_Position = t.Tool_Position
zu jedem Eintrag in Logfiles die zugehörige TTNR holen.

Ob die beiden Zeitstempel Start_Time_Local und Time_Stamp_Local in einem Zusammenhang stehen und wenn ja in welchem geht aus den Daten als solches erstmal nicht hervor.
 
Zurück
Oben