111945
Goto Top

MS SQL verknüpfte Abfrage DELETE Befehl

Hallo, habe folgende Abfrage deren Inhalte ich löschen möche.


SELECT *
FROM dbo.FaxJobs a, dbo.FaxAttachments b
Where a.JobID = b.JobID and a.CreationDate <= CONVERT(datetime, '01.01.2013 00:00:00', 104)
order by a.CreationDate

versucht habe ich es mit

DELETE
FROM dbo.FaxJobs a, dbo.FaxAttachments b
Where a.JobID = b.JobID and a.CreationDate <= CONVERT(datetime, '01.01.2013 00:00:00', 104)
order by a.CreationDate

wobei mir immer folgender Fehler ausgeworfen wird :

Meldung 102, Ebene 15, Status 1, Zeile 1
Falsche Syntax in der Nähe von 'a'.


Ich glaube ich schaue schon zulange drauf um den Fehler zu finden, vieleicht könnt ihr helfen.

VIelen Dank

Stefan

Content-Key: 207205

Url: https://administrator.de/contentid/207205

Printed on: April 27, 2024 at 03:04 o'clock

Member: LianenSchwinger
LianenSchwinger May 29, 2013 updated at 09:47:21 (UTC)
Goto Top
Hallo Stefan,

ich kenne mich zwar mit MS SQL nicht so aus, aber ich denke Du kannst nicht aus dem JOIN aus FaxJobs und FAXAttachments gleichzeitig Zeilen löschen.

G Jörg
Member: Biber
Biber May 29, 2013 updated at 09:50:46 (UTC)
Goto Top
Moin StfnCstr,


willkommen im Forum.

a) bei einem DELETE-Statement ist ein ORDER BY weder unterstützt noch sinnvoll.
b) du kannst nicht in zwei Tabellen "parallel" löschen - du musst dich für eine Tabelle entscheiden.

Wenn ich es inhaltlich richtig verstehe, sollen alle "älteren" Datensätze gelöscht werden, die in Alias a und b existieren (a und b über JobID verknüpft) und das "älter" wird ermittelt aus a.CreationDate.

Also musst du zuerst die aus Alias b (den FaxAttachments) löschen mit
DELETE FROM Dbo.FaxAttachments
where JOBID in
( Select a.JobID 
FROM dbo.FaxJobs a, dbo.FaxAttachments b
Where a.JobID = b.JobID and a.CreationDate <= CONVERT(datetime, '01.01.2013 00:00:00', 104)   
);

und im 2. Schritt die Sätze aus FaxJobs mit CreationDate > DatumX;

Grüße
Biber
Mitglied: 111945
111945 May 29, 2013 at 09:57:41 (UTC)
Goto Top
Hallo Biber,

klar, Order BY ist sinnlos, hat mir lediglich geholfen die Daten anzuzeigen. Mit unterabfragen habe ich es auch versucht, jedoch immer angefangen mit der Faxjobs tabelle.

Jetzt funktioniert es, danke dir für die Mühe

grüße

PS: Ticket kann als erledigt markiert werden.
Member: Biber
Biber May 29, 2013 at 15:02:28 (UTC)
Goto Top
Moin StfnCstr,

Zitat von @111945:
PS: Ticket kann als erledigt markiert werden.

Ähhm ja - allerdings kann/soll das bei uns der Beitragsersteller selbsttätig machen.
Wenn du eingeloggt bist, dann siehst du bei DEINEM Beitrag auch einen Button "Frage als gelöst markieren". mit einem WG-Mortadellafarbenen Häkchen.

Danke aber für die Rückmeldung.

Grüße
Biber