Seite 1 von 1

Datenbank bereinigen

Verfasst: So, 30.11.2008 14:04
von Steffan
hallo zusammen,

ich habe eine CD-Datenbank mit verschiedenen Tabellen.
Tabelle: DISCS
Felder: DiscID, ArtistID, ...
Tabelle: ARTISTS
Felder: ArtistID, ArtistName, ...
...

Folgender Fall:
die letzte CD eines bestimmten Interpreten wird gelöscht
Dann existiert der Interpret immer noch in der Tabelle ARTISTS.
Ich benötige also eine SQL-Befehl, der alle Datensätze aus der Tabelle ARTISTS löscht, deren ID NICHT in Tabelle DISCS vorkommt.

Das Anzeigen dieser Datensätze funktioniert mit:

Code: Alles auswählen

SELECT ArtistID 
FROM ARTISTS 
GROUP BY ArtistID 
HAVING (
	SELECT COUNT (*) 
	FROM DISCS 
	WHERE DISCS.ArtistID = ARTISTS.ArtistID
)=0

Allerdings bekomme ich es nicht hin diese Datensätze zu löschen.
Weiß jemand Rat?

Danke,
Steffan

Re: Datenbank bereinigen

Verfasst: So, 30.11.2008 15:08
von komma4
ungetestet:

Code: Alles auswählen

DELETE 
FROM ARTISTS AS ARTISTS
WHERE ARTISTS."ArtistID" NOT IN 
   ( SELECT DISTINCT DISCS."ArtistID"  FROM DISCS )
Viel Erfolg !

Re: Datenbank bereinigen

Verfasst: So, 30.11.2008 16:41
von Steffan
Besten Dank, hat funktioniert!

Schönen Sonntag noch,
Steffan