Jump to content
Bananeonline

Daten in mehreren Tabellen löschen

Recommended Posts

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

 

Share this post


Link to post
Share on other sites
DELETE * FROM TabelleC Where AusweisNr 15359
DELETE * FROM TabelleB Where ID = 15359
DELETE * FROM TabelleA Where ID = 15359

 

Share this post


Link to post
Share on other sites

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

 

 

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
vor 2 Stunden schrieb DerFrank:

Der beitrag von MDD ist richtig...

Super, dann markiere ihn bitte auch als Lösung, Danke. :)

Share this post


Link to post
Share on other sites
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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...