![]() |
MS Access Datenbank bereinigen
Hallo,
ich habe folgende Frage. Ich hab eine große Datenbank, dort sind ganz viele verschiedene ISINs gespeichert. Zu den ISINS werden werden noch Werte gespeichert, mehrmals am Tag. Nun möchte ich eine Abfrage erstellen, dass er mir für jeden Tag, wo die ISIN gespeichert wurde, nur noch den letzten Datensatz zur Verfügung stellt, der Rest soll endgültig GELÖSCHT werden. So sieht sie exemplarisch für eine ISIN aus. Man muss also irgendwie aus dem TimeStamp erst den Tag ziehen, dann für jeden Tag alles bis auf die letzte Zeit löschen und das für jede ISIN. Wie sieht die DELETE Anweisung aus? Schon mal vielen Dank. |
Zitat:
Möglicherweise kann man die Spalten absteigend sortieren und alle rechts der ersten löschen. So oder so ähnlich würde ich es in Excel machen. Der Dateityp der TimeStamp-Spalte dürfte natürlich nicht als Text formatiert sein. Aber wie gesagt, Access ist nicht Excel... Edit: Sorry, hatte dein Bild falsch gelesen, also wenn es überhaupt geht, müsste man natürlich nach Zeilen sortieren... Müsste eigentlich irgendwie in folgender Art sein: DELETE FROM (hier kenne ich mich nicht aus :( ) < MAX(TimeStamp) |
Also die TimestampZeile ist schon als Datum und Zeitfeld so eingespeichert, Access weiß genau, was drin steht. Nur ich muss ihm halt sagen, dass er immer nur für jeden Tag alles außer Max löschen sollen und halt dann zum nächsten Tag beim selben Wertpapier weitergeht...
|
Aber mit:
DELETE FROM DeinTabellenname WHERE TimeStamp < MAX(TimeStamp) sollte doch zumindest für die genannte Tabelle funktionieren, oder? Mit SELECT anstatt DELETE FROM kann man sich die zu löschenden Zeilen erst mal anzeigen lassen. Aber ich lasse es lieber, bevor ich noch mehr dummes Zeug erzähle.:D Wie gesagt, ist nicht nicht meine Baustelle, sorry... |
Naja, besser einer, als keiner^^ Sonst hat ja auch keiner Lust sich der Sache anzunehmen.
Problem ist halt, wenn ich so die Bedingung aufstelle wie du vorschlägst, dann knallt er mir ja viel zu viel weg... Aber ich probiere es Montag nochmal aus, glaube so hatte ich es am Anfang auch mal |
Ich habe das mit den Tagen jetzt erst geschnallt. Ich weiß nicht, ob das ohne Unterfunktion oder ohne das Definieren von Variablen geht, aber anscheinend brauchst du noch eine GROUP BY Anweisung, die die Zeilen nach dem Datum aus dem TimeStamp gruppiert. Also irgendwie in dieser Form:
DELETE FROM DeinTabellenname WHERE TimeStamp < MAX(TimeStamp) GROUP BY DateValue(TimeStamp) Aber über die Syntax (besonders bei DateValue(TimeStamp)) bin ich mir sowas von überhaupt nicht sicher...:mad: |
Kleines Update:
Habs hinbekommen ;) Code: DELETE FROM TabelleX AS A WHERE EXISTS ( SELECT NULL FROM TabelleX AS B WHERE DateValue(B.Timestamp) = DateValue(A.Timestamp) AND B.ISIN = A.ISIN AND B.TimeStamp < A. TimeStamp) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.