Alle Personen die anonymisiert werden dürfen
Hallo, ich habe schwierigkeiten bei einer Abfrage, die alle Personen ermitteln soll, welche theoretisch gelöscht werden können aber aufgrund von Fremdschlüssel-Beziehungen in anderen Tabellen nicht gelöscht werden können.
Ich möchte also als erstes alle Personen, die in irgendeiner Tabelle referenziert sind. Zeitgleich muss aber in ALLEN dieser Tabellen der Zweck der Speicherung entfallen sein.
Ich habe in etwa 10 Tabellen, wo die Person refereneziert ist, als Beispiel nehme ich hier zwei fiktive.
In der einen Tabelle sind Notizen zur Person hinterlegt. Wenn die Person alle Notizen gelesen hat oder wenn es keine gibt, dann ist der Zweck entfallen.
In der zweiten Tabelle sind Verträge zur Person hinterlegt. Wenn alle Verträge abgelaufen sind oder es keine gibt, dann ist der Zweck entfallen.
Mein Versuch sieht so aus:
Das Ergebnis ist falsch. Ich müsste irgendwie ja wissen, welches Tabellen aus dem Ersten Bedingungs-Block ausgegeben werden, also welche Tabellen Einträge haben, damit ich die Bedingungen im zweiten Block mit AND verknüpfen kann.
Bitte um Hilfe
Hallo, ich habe schwierigkeiten bei einer Abfrage, die alle Personen ermitteln soll, welche theoretisch gelöscht werden können aber aufgrund von Fremdschlüssel-Beziehungen in anderen Tabellen nicht gelöscht werden können.
Ich möchte also als erstes alle Personen, die in irgendeiner Tabelle referenziert sind. Zeitgleich muss aber in ALLEN dieser Tabellen der Zweck der Speicherung entfallen sein.
Ich habe in etwa 10 Tabellen, wo die Person refereneziert ist, als Beispiel nehme ich hier zwei fiktive.
In der einen Tabelle sind Notizen zur Person hinterlegt. Wenn die Person alle Notizen gelesen hat oder wenn es keine gibt, dann ist der Zweck entfallen.
In der zweiten Tabelle sind Verträge zur Person hinterlegt. Wenn alle Verträge abgelaufen sind oder es keine gibt, dann ist der Zweck entfallen.
Mein Versuch sieht so aus:
Code:
SELECT
*
FROM
Person person
WHERE
(
(EXISTS (SELECT personID FROM Notiz WHERE person.ID = FK_personID)) OR
(EXISTS (SELECT personID FROM Vertrag WHERE person.ID = FK_personID))
)
AND
(
(SELECT COUNT(*) FROM Notiz WHERE person.ID = FK_personID AND gelesen = 0) = 0
OR
(SELECT COUNT(*) FROM Vertrag WHERE person.ID = FK_personID AND Endedatum < GETDATE()) = 0
)
Das Ergebnis ist falsch. Ich müsste irgendwie ja wissen, welches Tabellen aus dem Ersten Bedingungs-Block ausgegeben werden, also welche Tabellen Einträge haben, damit ich die Bedingungen im zweiten Block mit AND verknüpfen kann.
Bitte um Hilfe