Sven Rautenberg: Löschabfrage für MySQL und PHP?

Beitrag lesen

Aloha!

ich habe folgendes Problem. Es sind 2 Tabellen ( Personen und Einrichtungen ). Jede Person kann mehrere Einrichtungen haben. Verknüpft sind diese über person.id und einrichtung.person_id. Wie lösche ich jetzt alle Einrichtungen, zu der es keine Person mehr gibt (wurden gelöscht). Gibt es da einen SQL Befehl?

Du bist da auf ein diffiziles Problem gestoßen. Und so, wie du es schilderst, vermute ich, daß mehr dahintersteckt, als du bislang erwähnt hast.

Zunächst zu dem, was du gesagt hast: Wenn es tatsächlich so ist, daß deine Personen und Einrichtungen in einer 1:m-Beziehung stehen, dann mußt du die Einrichtungen, die mit Person X in Beziehung stehen, dann löschen, wenn du Person X löschst.

Also
DELETE FROM person WHERE id = X;
DELETE FROM einrichtung WHERE person_id = X;

Deine Schilderung ist etwas vage, und allein anhand der Begriffe "Person" und "Einrichtung" kann ich mir nicht so ganz vorstellen, daß du tatsächlich eine 1:m-Beziehung hast. Mehrere Einrichtungen können zu einer Person gehören, aber auch mehrere Personen zu einer Einrichtung. Das wäre eine n:m-Beziehung, und da wird es schon komplizierter, weil du zwar Person X löschen mußt, aber nicht zwangsweise alle ihr zugeordneten Einrichtungen - weil es Person Y geben könnte, die dieser Einrichtung auch zugeordnet ist.

- Sven Rautenberg