Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

SQL DELETE: Bedingung in anderer Tabelle

Yves3 / 0 Antworten / Baumansicht Nickles

Hallo

Ich habe die Tabelle t_VolumegroupToVolume und die Tabelle t_Volumegroup und will mit einem DELETE Query diejenigen Datensätze aus t_VolumegroupToVolume löschen, die in der Tabelle t_Volumegroup in der Spalte SystemID einen bestimmten Wert haben und deren VolumegroupID nicht '[SystemID]_DELETED' ist. Verknüpft sind die beiden Tabellen über die VolumegroupID.

Hier mein aktueller Ansatz, dann sollte eigentlich klar sein was ich will:

DELETE FROM t_VolumegroupToVolume WHERE VolumegroupID != 'IBM.2107-XYZ_DELETED'
AND 'IBM.2107-XYZ' IN (SELECT SystemID FROM t_VolumegroupToVolume WHERE t_Volumegroup.VolumegroupID = t_VolumegroupToVolume.VolumegroupID);

So funktioniert das leider nicht. Ich bekommen immer folgende Meldungen:
"Msg 4104, Level 16, State 1, Line 7
Der mehrteilige Bezeichner "t_Volumegroup.VolumegroupID" konnte nicht gebunden werden.
Msg 207, Level 16, State 1, Line 8
Ungültiger Spaltenname 'SystemID'."

Weiss jemand wie ich das machen muss, damit es funktioniert?

EDIT: Ich konnte das Problem nun doch noch selber lösen:

DELETE FROM t_VolumegroupToVolume WHERE t_VolumegroupToVolume.VolumegroupID != 'IBM.2107-XYZ_DELETED'
AND t_VolumegroupToVolume.VolumegroupID IN
(SELECT t_VolumegroupToVolume.VolumegroupID FROM t_VolumegroupToVolume, t_Volumegroup
WHERE t_Volumegroup.VolumegroupID = t_VolumegroupToVolume.VolumegroupID
AND t_Volumegroup.SystemID = 'IBM.2107-XYZ');

bei Antwort benachrichtigen