UnKnOwN_86
Ensign
- Registriert
- Apr. 2010
- Beiträge
- 186
Hi.
Ich würde gerne auf elegante Weise Daten einer Tabelle löschen die selbst referenzierend sind.
Beispiel Daten:
ID--PARENT_ID-----SomeRandomText
1....0.....................Entry 1
2....1.....................Entry 2
3....1.....................Entry 3
4....2.....................Entry 4
5....3.....................Entry 5
Wenn ich nun den ersten Datensatz lösche (Entry 1) dann sollten alle anderen auch gelöscht werden, weil 2 und 3 "Kindselemente" von 1 sind, 4 ist von 2 und 5 ist von 3 das "Kindselement".
Ich bau mir zur Zeit eine SQL-Statement mit
delete bla where PARENT_ID in (select ID from bla where PARENT_ID = 1)
Das noch 10 mal und immer mehr IN (select...) da das mitlerweile unübersichtlich ist, dachte ich mir vielleicht gibt es eine bessere SQL Lösung.
Zusätzlich zu diesen Datensätzen gehört auch noch eine weitere Tabelle gelöscht, die eine 1:N Beziehung darstellt und für Verweise zuständig ist.
Also in der Zweiten Tabelle wäre:
ID--MainTableID-----DetailInfos
1....1.....................DetailInfo 1
2....1.....................DetailInfo 1.1
3....2.....................DetailInfo 2
4....3.....................DetailInfo 3
5....3.....................DetailInfo 3.1
6....4.....................DetailInfo 4
7....5.....................DetailInfo 5
Diese sollte nach dem Löschvorgang auch leer sein, da die "MainTableID" 1-5 bereits oben aufgrund der Selbstreferenzierung bereinigt worden ist, und somit diese Verweise auch nicht mehr benötigt werden.
Die Lösung sollte für unendlich viele Verschachtelungen/Ebenen funktionieren.
Hoffe ihr könnt mir helfen.
Ich würde gerne auf elegante Weise Daten einer Tabelle löschen die selbst referenzierend sind.
Beispiel Daten:
ID--PARENT_ID-----SomeRandomText
1....0.....................Entry 1
2....1.....................Entry 2
3....1.....................Entry 3
4....2.....................Entry 4
5....3.....................Entry 5
Wenn ich nun den ersten Datensatz lösche (Entry 1) dann sollten alle anderen auch gelöscht werden, weil 2 und 3 "Kindselemente" von 1 sind, 4 ist von 2 und 5 ist von 3 das "Kindselement".
Ich bau mir zur Zeit eine SQL-Statement mit
delete bla where PARENT_ID in (select ID from bla where PARENT_ID = 1)
Das noch 10 mal und immer mehr IN (select...) da das mitlerweile unübersichtlich ist, dachte ich mir vielleicht gibt es eine bessere SQL Lösung.
Zusätzlich zu diesen Datensätzen gehört auch noch eine weitere Tabelle gelöscht, die eine 1:N Beziehung darstellt und für Verweise zuständig ist.
Also in der Zweiten Tabelle wäre:
ID--MainTableID-----DetailInfos
1....1.....................DetailInfo 1
2....1.....................DetailInfo 1.1
3....2.....................DetailInfo 2
4....3.....................DetailInfo 3
5....3.....................DetailInfo 3.1
6....4.....................DetailInfo 4
7....5.....................DetailInfo 5
Diese sollte nach dem Löschvorgang auch leer sein, da die "MainTableID" 1-5 bereits oben aufgrund der Selbstreferenzierung bereinigt worden ist, und somit diese Verweise auch nicht mehr benötigt werden.
Die Lösung sollte für unendlich viele Verschachtelungen/Ebenen funktionieren.
Hoffe ihr könnt mir helfen.