speedi Geschrieben 9. Oktober 2008 Teilen Geschrieben 9. Oktober 2008 Hallo, ich habe hier eine Wetterdatenbank in der ich 2 Tabellen miteinander verknüpfen muss. In der einen Tabelle steht Windrichtung(int),TimeStamp(double) und in der anderen Windgeschwindigkeit(float), TimeStamp(double). Nun möchte ich eine Tabelle erstellen in welcher steht zu welcher Zeit der Wind wie stark war und aus welcher Richtung er kam. Prinzipiell nicht schwierig, jedoch werden Windgeschwindigkeit und Windrchtung nicht synchron gemessen. Nichtmal mit der gleichen frequenz. Die Windgeschwindigkeit wird mit einer Abtastrate von 10 Hz gemessen aber die Windrichtung wird völlig unregelmäßig in die Datenbank eingetragen. Hat jemand eine Idee wie die Abfrage nun lauten müsste? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
OnkelPaddy Geschrieben 9. Oktober 2008 Teilen Geschrieben 9. Oktober 2008 Ein Ansatz wäre etwa select * from tabelle1 as a join tabelle 2 as b on substring(a.timestamp, 1, 10) = substring (b.timestamp, 1, 10) Natürlich müsste man das entsprechend dem DB System umsetzen. Also du kannst z.B. den Substring nach CHAR wandeln und dann nur die ersten Teile (z.B. bis 10er Minuten) prüfen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 9. Oktober 2008 Teilen Geschrieben 9. Oktober 2008 Da Du kein == hast, musst Du irgendwelche Zeitfenster nehmen, die Du aber selbst bestimmen musst: Da der Timestamp sich als Unixtimestamp (Sek. ab dem 1.1.1970) ausdrücken lässt würde analog auch so etwas gehen: Select wie von meinem Vorposter und das Join dann unixtimestamp(a.zeit) between unixtimestamp(b.zeit - b.zeit*0.1) unixtimestamp(b.zeit + b.zeit*0.1) Damit hast Du im Grunde eine Abweichung von +- 10% von Deiner aktuellen Zeit (Typenkonvertierung usw musst Du natürlich entsprechend vornehmen). Damit hättest Du ein "ungefähr" mit einer Abweichung von +-10% realisiert HTH Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
speedi Geschrieben 10. Oktober 2008 Autor Teilen Geschrieben 10. Oktober 2008 Das Wort "Abweichung" ist gehört leider nicht zum Wortschatz meines Projektleiters wenn es um die reine Auswertung bereits erhobener Daten geht (auch wenn diese Zeitkritisch geschieht). Der TimeStamp ist ein float der die verstrichenen Sekunden (mit Dezimalstellen) seit Beginn der Simulation anzeigt. Habs jetzt so gemacht: SELECT * FROM windgeschwindigkeit LEFT OUTER JOIN windrichtung ON windgeschwindigkeit.TimeStamp = windgeschwindigkeit.TimeStamp Das hat zwar zur Folge, dass viele Einträge eine "NULL" enthalten, aber mein Programm greift dann einfach auf das letzte != null zurück. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
speedi Geschrieben 10. Oktober 2008 Autor Teilen Geschrieben 10. Oktober 2008 Ach Sch****!!! Jetzt gibt er mir die Änderung der Windrichtung natürlich nur aus, wenn es dazu auch einen Datensatz Windgeschwindigkeit mit gleichen TimeStamp gibt. Ne Idee, wie ich es mache, dass er in dem Fall, dann einfach NULL-Werte bei Windgeschwindigkeit raushaut? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 10. Oktober 2008 Teilen Geschrieben 10. Oktober 2008 Ich denke Dein Problem ist nicht das Datenbankproblem, sondern das inhaltliche. Du musst und das wäre mein Ratschlag, erst einmal überlegen was als Ergebnis herauskommen soll und die nächste Frage wäre dann, ist das mit diesen Daten, in dieser Form auch so möglich. Du kannst nichts auswerten, was nicht vorhanden ist! Löse das Problem nicht an der Spitze sondern an der Wurzel Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
speedi Geschrieben 10. Oktober 2008 Autor Teilen Geschrieben 10. Oktober 2008 (bearbeitet) Also was mit helfen würde wäre eine Tabelle zu bekommen die in etwa so aufgebaut ist: Windgeschwindigkeit.TimeStamp | Windgeschwindigkeit | Windrichtung.TimeStamp | Windrichtung NULL | NULL | 1.25 | 270 2.74 | 35 | NULL | NULL 3.12 | 32 | 3.12 | 272 ... ... Also ich brauche die Windrichtung und die Windgeschwindigkeit geordnet nach TimeStamp. Wenn zu einem bestimmten TimeStamp kein Datensatz in der jeweiligen Tabelle vorhanden ist möchte ich einfach NULL drinstehen haben. Bearbeitet 10. Oktober 2008 von speedi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 10. Oktober 2008 Teilen Geschrieben 10. Oktober 2008 Das ist im Grunde zwei Joins (left / right) und das Ergebnis via Union verbunden. Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
allesweg Geschrieben 13. Oktober 2008 Teilen Geschrieben 13. Oktober 2008 Full outer join... Join (SQL) - Wikipedia, the free encyclopedia Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
speedi Geschrieben 13. Oktober 2008 Autor Teilen Geschrieben 13. Oktober 2008 (bearbeitet) Ja. Den hab ich in wikipedia am Wochenende auch gefunden. Und bemerkt das MySQL das nicht kann. Hab jetzt aber Aufgrund deines Hinweises nochmal weiter gelesen und endlich bemerkt, dass darunter noch Alternativen aufgelistet sind, wie man das gleiche Ergebnis erreicht. Danke! Bearbeitet 13. Oktober 2008 von speedi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.