PDA

Vollständige Version anzeigen : Problem mit Anfügeabfrage, bzw. Löschabfrage


mark-williams
05.07.2006, 12:43
Hallo Leute!

Ich habe ein Problem:
Ich muss mehrere Tabellen importieren und die Datensätze zusammenfügen. Damit keine
doppelten Datensätze importiert, bzw. eingefügt werden, wollte ich eine Anfüge-Abfrage
erstellen, die das verhindert. Das habe ich aber leider nicht hinbekommen :( ...
Wollte daher nun so vorgehen: Zuerst eine Löschabrage durchführen, die mir die Datensätze
aus Tabelle 2 löscht, die mit Tabelle 1 übereinstimmen und dann eben diese "bereinigte"
Tabelle anfügen. Nun habe ich aber auch Probleme mit der Löschabfrage. Bei folgendem Code:
DELETE tbl_Temp.Feld1, tbl_Temp.Feld2, tbl_Temp.Feld3
FROM tbl_aussortiert, tbl_Temp
WHERE tbl_Temp.Feld1=[tbl_aussortiert].[Feld1]
AND tbl_Temp.Feld2=[tbl_aussortiert].[Feld2]
AND tbl_Temp.Feld3=[tbl_aussortiert].[Feld3];
erhalte ich die Fehlermeldung "Geben sie die Tabelle an, die die zu löschenden Datensätze
enthält", obwohl ich diese doch angegeben habe, oder??

Ich habe auch schon folgendes probiert:
DELETE tbl_Temp.Feld3
FROM tbl_Temp
WHERE (((tbl_Temp.Feld3) In (SELECT tbl_Temp FROM [tbl_aussortiert])));
Dort verlangt er aber so verlangt er aber immer einen Parameterwert.
Wie gesagt, ich möchte nur, dass mir die Löschabfrage die Datensätze in tbl_Temp löscht,
deren Inhalt schon in tbl_aussortiert vorhanden ist (die anderen soll er natürlich lassen) ...
Könnt ihr mir helfen??

mfg Mark

J_Eilers
05.07.2006, 12:58
Hi,

mit einer Löschabfrage kannst du immer nur ganze Datensätze löschen. Also sollte man am Besten den * verwenden und keine Feldnamen angeben. Übrigends kannst du das auch direkt in der Anfrage vermeiden:

INSERT INTO Tabelle
(Feld1,
Feld,
Feld3)
SELECT
Feld1,
Feld2,
Feld3
FROM
Tabelle2 LEFT JOIN Tabelle ON
Tabelle2.Feld1 = Tabelle.Feld1
AND Tabelle2.Feld2 = Tabelle.Feld2
AND Tabelle2.Feld3 = Tabelle2.Feld3
WHERE
Tabelle.Feld Is Null

Kann auch ein RIGHT JOIN sein, mir ist grad alles zu warm hier...

mark-williams
05.07.2006, 15:08
Hallo Jan!

Super, habe ein bisschen rumprobiert und nun klappt es :) !!! Hast mir wirklich weitergeholfen,
hab schon lange nach einer Lösung gesucht .. Hier der fertige Code:
INSERT INTO tbl_aussortiert ( Feld1, Feld2, Feld3 )
SELECT tbl_Temp.Feld1, tbl_Temp.Feld2, tbl_Temp.Feld3
FROM tbl_Temp LEFT JOIN tbl_aussortiert ON
(tbl_Temp.Feld1=tbl_aussortiert.Feld1) AND
(tbl_Temp.Feld2=tbl_aussortiert.Feld2) AND
(tbl_Temp.Feld3=tbl_aussortiert.Feld3)
WHERE ((([tbl_aussortiert.Feld1]) Is Null));

Vielen Dank, mfg Mark