Schwierigkeit bei Komplexe SQL Abfrage

thehasso

Erfahrenes Mitglied
Hallo zusammen,



ich hab folgende tabellen (LINKS) Bildtabelle und Tabelle (RECHTS) sind inserate die eingefügt werden. Zu jedem Inserat kann es Bilder geben. Aber ein Bild muss zu ein Inserat gehören.

6q242hvi.png




Ich möchte ein SQL ABFRAGE bei dem alle Bilder gelöscht werden zu dem es kein Inserat gibt. Dazu muss ich aber erst mal diese Bilder auslesen aus der Tabelle Bilder.

Folgendes hab ich mir gedacht:


Code:
 $SQL = "SELECT *
FROM   usergallery_images
WHERE  Not Exists (SELECT inserat_haus.ordner, inserat_garage.ordner, inserat_halle.ordner, inserat_gasstation.ordner
                   FROM   inserat_haus, inserat_garage, inserat_halle, inserat_gasstation
                   WHERE  inserat_haus.ordner = usergallery_images.ordner && inserat_garage.ordner = usergallery_images.ordner &&  inserat_halle.ordner = usergallery_images.ordner && inserat_gasstation.ordner = usergallery_images.ordner) ";

Würd mich über eine Verbesserung bzw. richtigstellung der Abfrage freuen!


LG
 
Hey, gemäß deiner Definition dürfte diese Fall gar nicht eintreten

Aber ein Bild muss zu ein Inserat gehören.

Solltest also generell mal deine Einfügerestriktionen überarbeiten ;)

Aus deinem Diagramm werd ich nicht schlau.. wäre super wenn du mal eine "richtige" Tabellendefintion posten könntest (DDL oder Grafik). Wie sieht die Kardinalität für Bilder zu Inseraten aus, genau 1 oder beliebig viele (also: kann ein Bild zu mehreren Inseraten gehören).

Du brauchst auch nicht erst zu selektieren sondern kannst direkt deine
DELETE FROM usergallery_images WHERE ...
schreiben ;)
 
Zurück