SQL-Abfrage mit JOIN
am 01.03.2006 22:15:58 von Andreas HofmannHallo,
Ich steh grade etwas auf dem Schlauch. Ich habe da ein
"gewachsenes System" und müsste eine Löschung von nicht
mehr angebundenen Daten vornehmen.
Also: Situation ist folgende:
- 1:n-Beziehung zweier Tabellen
- Köpfe (1-Tabelle) wurden gelöscht
- Positionen (n-Tabelle) sind noch vorhanden
Ich möchte nun auch die Positionen löschen, also die
Datensätze bei denen der foreign key des Kopfes in
der Kopf-Tabelle nicht mehr vorhanden ist.
Ich dachte zuerst, im Thread von Sebastian Wittek von
gestern wird genau mein Problem beschrieben, aber beim
Versuch, die Abfrage für meine Tabellen umzuschreiben,
kamen viel zu wenige Datensätze heraus (80 000). Um das
klar zu machen: Es sind 140 000 Köpfe da, es darf aber
nur maximal 5 Positionen pro Kopf geben, also maximal
700 000, es sind aber 3 000 000 Positionen vorhanden,
also mindestens 2,3 Mio zuviel.
Die Abfrage ist bis jetzt (ad=Köpfe, picture=Positionen):
SELECT p.pictures_siteid
FROM ad
LEFT JOIN picture p
ON ad.id = p.pictures_siteid
WHERE p.pictures_siteid is NULL
Noch ne Frage: Gibt's bei MySQL Löschweitergaben, sprich
wenn man den Kopf löscht, werden auch die zugehörigen
Positionen gelöscht?
Gibt's irgendwo ne Website, auf der so einen Tick
kniffligere Abfragen als die absoluten Basics erklärt
werden bzw. es Beispiele gibt?
Grüße,
Andreas