Einfügeabfrage fügt nicht alle DS auf einmal ein

03/03/2008 - 10:30 von Andreas Vogt | Report spam
Hallo NG
Nachfolgende Abfrage direkt ausgeführt fügt von ca. 300 DS nur 260 DS
ein. Beim 2. Mal ausführen dann 38 von 40 DS und beim 3. Mal sind dann
alle eingefügt:

INSERT INTO tbl_Ventilplatte_Daten
SELECT Ventilplatte1.ID_Ven AS ID_Ven, Ventilplatte1.ZD100_50 AS
ZD100_50, Ventilplatte1.ZD_Abtrag AS ZD_Abtrag, Ventilplatte1.AD AS
AD, Ventilplatte1.AD_Abtrag AS AD_Abtrag, Ventilplatte1.Verhaeltnis AS
Verhaeltnis
FROM Ventilplatte1
WHERE Ventilplatte1.ID IN
(SELECT B.IDL FROM
[SELECT ID_Ven, Count(ID_Ven) AS CntA FROM
tbl_Ventilplatte_Daten GROUP BY ID_Ven]. AS A
INNER JOIN
[SELECT ID_Ven, Count(ID_Ven) AS CntB, Last(ID) AS IDL
FROM Ventilplatte1
GROUP BY ID_Ven]. AS B
ON A.ID_Ven=val(B.ID_Ven)
WHERE val(B.CntB)>A.CntA Order By B.IDL)

Die Frage nun ist, wie kann ich sicherstellen dass alle Datensàtze
eingefügt werden? Geht so was in der Art wie Do until [Abfrage keine
leere Menge liefert] oder wie packt man das an?
Lass ich INSERT INTO tbl_Ventilplatte_Daten am Anfang weg funktioniert
die Abfrage wie gewünscht.

Gruß Andreas
 

Lesen sie die antworten

#1 Ulf Knochenhauer
03/03/2008 - 11:29 | Warnen spam
Hallo Andreas,

INSERT INTO tbl_Ventilplatte_Daten
SELECT Ventilplatte1.ID_Ven AS ID_Ven, Ventilplatte1.ZD100_50 AS
ZD100_50, Ventilplatte1.ZD_Abtrag AS ZD_Abtrag, Ventilplatte1.AD AS
AD, Ventilplatte1.AD_Abtrag AS AD_Abtrag, Ventilplatte1.Verhaeltnis AS
Verhaeltnis
FROM Ventilplatte1
WHERE Ventilplatte1.ID IN
(SELECT B.IDL FROM
[SELECT ID_Ven, Count(ID_Ven) AS CntA FROM
tbl_Ventilplatte_Daten GROUP BY ID_Ven]. AS A
INNER JOIN
[SELECT ID_Ven, Count(ID_Ven) AS CntB, Last(ID) AS IDL
FROM Ventilplatte1
GROUP BY ID_Ven]. AS B
ON A.ID_Ven=val(B.ID_Ven)
WHERE val(B.CntB)>A.CntA Order By B.IDL)



IMHO ist die SQL-Syntax falsch. Schau mal in die OH

INSERT INTO Ziel [(Feld1[, Feld2[, ...]])] [IN externe_Datenbank]
SELECT [Quelle.]Feld1[, Feld2[, ...]
FROM Tabellenausdruck

Grüße
Ulf

Ähnliche fragen