Geht das? Löschen über merhrere Tabellen mit unterschiedlichen Datensätzen.

TribunM

Erfahrenes Mitglied
Also ich habe eine user Datenbank. Die haben Themen, Kommentare usw.

Wenn ich jetzt Daten vom User löschen möchte, ohne aber den Nutzer zu löschen, sollen ementsprechend alle Datensätze mit der gleichen UserID gelöscht werden. Dass dies geht mit mehreren Queries ist klar. Aber geht das auch in einem Query,wenn die Tabellen je unterschiedliche Daten aufweisen können?

Also ich meine wir haben die Tabelle User, News, Kommentare, Gruppen

Tabelle User
ID User_id

Tabelle News
ID User_id News

Tabelle Komentare
ID User_id Kommentar

Tabelle Gruppe
ID User_id Gruppenname

Jetzt hat der User z.B. X x News, Y x Kommentare, Z x Gruppen. Ich möchte also alle News, Kommentare und Gruppen löschen. Es kann aber auch sein, dass ein User mal keine News, Kommentare oder Gruppen hat. Das variiert ja.

Kann man das in einem Query lösen? Ich habe es schon nach der mysql doku versucht mit USING usw. aber das klappt nicht so recht. Nutze MYISAM.

Wenn in News und Kommentare sowie Gruppen Daten vorhanden sind, dann klappt folgendes.

Code:
DELETE FROM Kommentare, News, Gruppe USING Kommentare, News, Gruppe, Users AS U
    	      LEFT JOIN Kommentare AS K
                ON K.user_id = U.user_id
              LEFT JOIN News AS N
                ON N.user_id = U.user_id
              LEFT JOIN Gruppe  AS G
                ON G.user_id = U.user_id
              WHERE U.user_id = 1

Fehlt aber ein Datensatz in einer der Tabellen klappt es halt nicht. Kann auch sein, dass ich einen Denkfehler habe. Im Moment komme ich aber nicht dahinter.

Wäre super, wenn Jemand eine Idee hätte.
 
Zuletzt bearbeitet:
Hi,

entschuldige bitte aber was spricht den gegen eine Prozedur, die das intern für jede Tabelle durchführt und du beim Aufruf nur die User-ID eingibst und dann wird alles zu dem Benutzer gelöscht?

Gruß
 
hm ja stimmt, würde auch gehen. Aber im Moment möchte ich gerne den obigen Lösungsansatz weiterverfolgen, ob das so überhaupt in der Art gelöst werden kann und wie. Mit den Joins ist wahrscheinlich falsch.
 
Zuletzt bearbeitet:
Alter so viel zu Denkfehler. So falsch lag ich ja gar nicht ;). Ich danke dir, das sieht sehr gut aus. Verstehe aber nicht, warum das mit dem USING nicht funktioniert. Ist doch sehr ähnlich der Aufbau.
 
Zurück