Bananeonline 10 Geschrieben 28. Juni 2019 Melden Teilen Geschrieben 28. Juni 2019 Hallo, ich brauche Hilfe bei einem Script das in der Tabelle A alle Datensätze löscht bei dem das bisdatum <= Heute ist. Allerdings sollen vorher noch alle über die in Tabelle A "ID" verknüpften Datensätze in der Tabelle B (ID) und Tabelle C (AusweisNr) gelöscht werden. Ein Beispiel: Tabelle A: bisdatum: 2019-06-20 00:00:00.000 ID: 15359 Tabelle B: ID = 15359 Tabelle C: AusweisNr. = 15359 Am Ende sollen alle 3 Datensätze in den Tabellen A, B und C gelöscht sein. Kann mir hier bitte jemand behilflich sein? SQL ist leider nicht meine Stärke :-( Viele Grüße Daniel Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 28. Juni 2019 Melden Teilen Geschrieben 28. Juni 2019 DELETE * FROM TabelleC Where AusweisNr 15359 DELETE * FROM TabelleB Where ID = 15359 DELETE * FROM TabelleA Where ID = 15359 Zitieren Link zu diesem Kommentar
Bananeonline 10 Geschrieben 28. Juni 2019 Autor Melden Teilen Geschrieben 28. Juni 2019 Danke Sunny61, soweit klar. Das Ziel ist, ein Script zu haben das täglich läuft und immer die Datensätze löscht bei denen das "bisdatum" in Tabelle A <= Heute ist und alle mit gleicher ID in den Tabellen B und C. Gruß Daniel Zitieren Link zu diesem Kommentar
Beste Lösung MDD 12 Geschrieben 28. Juni 2019 Beste Lösung Melden Teilen Geschrieben 28. Juni 2019 Hallo DELETE * FROM TabelleB where ID in (SELECT ID FROM TabelleA where bisdatum < CAST(GETDATE() as Date)) DELETE * FROM TabelleC where AusweisNr in (SELECT ID FROM TabelleA where bisdatum < CAST(GETDATE() as Date)) DELETE * FROM TabelleA where bisdatum < CAST(GETDATE() as Date) Damit sollte zuerst aus den "Untertabellen" die Datensätze rausgeschmissen werden die älter sind als der aktuelle Tag sind und zuletzt die Tabelle A selbst bereinigen werden. Bei Bedarf kann man das Ergebnis der Unterabfrage von Tabelle A auch temporär zwischenspeichern und damit nur 1x abfragen. Zuerst Daten sichern dann probieren ;) Gruß MDD --- Klammer entfernt Zitieren Link zu diesem Kommentar
DerFrank 15 Geschrieben 28. Juni 2019 Melden Teilen Geschrieben 28. Juni 2019 (bearbeitet) Der beitrag von MDD ist richtig... bearbeitet 28. Juni 2019 von DerFrank Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 28. Juni 2019 Melden Teilen Geschrieben 28. Juni 2019 vor 2 Stunden schrieb DerFrank: Der beitrag von MDD ist richtig... Super, dann markiere ihn bitte auch als Lösung, Danke. :) Zitieren Link zu diesem Kommentar
Bananeonline 10 Geschrieben 28. Juni 2019 Autor Melden Teilen Geschrieben 28. Juni 2019 vor 3 Stunden schrieb MDD: DELETE * FROM TabelleB where ID in (SELECT ID FROM TabelleA where bisdatum < CAST(GETDATE() as Date)) DELETE * FROM TabelleC where AusweisNr in (SELECT ID FROM TabelleA where bisdatum < CAST(GETDATE() as Date)) DELETE * FROM TabelleA where bisdatum < CAST(GETDATE() as Date)) Funktioniert, wenn man in der letzten Zeile eine ")" entfernt. Vielen Dank für die schnelle Hilfe Viele Grüße Zitieren Link zu diesem Kommentar
Lian 2.436 Geschrieben 28. Juni 2019 Melden Teilen Geschrieben 28. Juni 2019 Bitte Code auch als solchen Einfügen im Editor. Siehe: Danke Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.