Daten aus zwei MYSQL Tabellen vergleichen und löschen

Ruebezahl

Grünschnabel
Hallo Forum User,
ich habe gesehen das hier Leuten mit Problemen geholfen wird, daher habe ich mich in der Hoffnung angemeldet das Ihr mir behilflich sein könnt.

Ich möchte gerne 2 MSQL Tabellen miteinander vergleichen und überflüssige Daten löschen. Das rührt daher das mein "löschen-script" nicht richtig geschrieben war und mir zwar Einträge gelöscht hat, aber nicht die dazugehörigen Bilder vom Server und den Einträgen aus der Datenbank (eintrag_pics). Ja und jetzt hat sich halt über die Jahre Datenmüll angesammet den ich gerne loswerden möchte!

Zu meinen Tabellen:

Diese wurden als "eintrag" & "eintrag_pics" benannt. Die laufende ID wurde als "ADID" bezeichnet und ist in beiden Tabellen vorhanden. Nun wäre es klasse wenn MYSQL die Datensäte aus der "eintrag_pics" mit der "eintrag" Tabelle vergleichen würde und die ADID die es nur noch in der "eintrag_pics" gibt ausgibt, damit man daraus dann die Bilder sowie den Tabelleneintrag löschen könnte.

Ich würde mich über Tipps, Hinweise oder andere Lösungsansätze sehr freuen!

Viele Grüße,
Ruebezahl
 
Zuletzt bearbeitet:
Mit einem LEFT JOIN und der Prüfung auf NULL kann man das gut herausfinden
SQL:
SELECT
	eintrag_pics.adid
FROM
	eintrag_pics
	LEFT JOIN eintrag
		ON eintrag_pics.adid = eintrag.adid
WHERE
	ISNULL(eintrag.adid)

Und zum löschen müsste dies eigentlich funktionieren (ist aber ungetestet!)
SQL:
DELETE
FROM 
	eintrag_pics
WHERE
	adid IN (
				SELECT
					eintrag_pics.adid
				FROM
					eintrag_pics
					LEFT JOIN eintrag
						ON eintrag_pics.adid = eintrag.adid
				WHERE
					ISNULL(eintrag.adid)
			);

Mach am besten zuerst eine Kopie/Backup der Tabelle. Sicher ist Sicher
 
Boa yaslaw,

genau das habe ich gesucht. :) Recht herzlichen Dank!

Aber ich habe vergessen das ich bei der gastgeber_picseine zusätzliche ID der Bilder brauche um diese löschen zu können... Ich habe scon versucht die ID mitabzufragen, hat aber nicht ganz so geklappt! :rolleyes:
 

Neue Beiträge

Zurück