Hallo Leute,
ich habe bzgl einer INSERT INTO-Abfrage eine Frage an Euch. Meinen SQL-Code findet ihr unten. Irgendwie moniert SQL immer meinen Dateipfad, gibt den Fehler "Syntaxfehler in der INSERT-INTO-Anweisung " an und markiert den Dateipfad:
INSERT INTO Output [Testdatenbank_4.accdb, "\\U:\Daten"] [(Output.XXX[, Output.YYY[, Output.ZZZ[, Output.Summe[, Output.Summe_Updated]]]])]
SELECT [Abfrage5. ] A.XXX [, A.YYY [, A.ZZZ [, A.Summe [, B.Einschränkung [, B.Hauptniederlassung [, B.Niederlassung]]]]]]
FROM Output AS A INNER JOIN Zuordnung AS B ON (A.XXX=B.XXX) AND (A.YYY=B.YYY)
WHERE A.ZZZ<>463310 And A.ZZZ=B.ZZZ Or B.ZZZ=0
Und so habe ich die Formel verstanden:
INSERT INTO Output [Testdatenbank_4.accdb, U:\Daten] gibt mit Output die Tabelle innerhalb einer Access Datenbank an, in die eingefügt werden soll. Dahinter steht dann der Name der Datei und der Dateipfad der Datenbankdatei, in die eingefügt werden soll.
[(Output.XXX[, Output.YYY[, Output.ZZZ[, Output.Summe[, Output.Summe_Updated]]]])]: beschreibt die Felder der Tabelle, in die nun eingefügt wird.
Und der nachfolgende SELECT-Befehl generiert die Abfrage/die Tabelle, die ich verschieben möchte.
Ich verstehe aber nicht, wieso dieser Befehl nicht funktioniert und SQL insbesondere den Dateipfad markiert. Was den Dateipfad angeht, habe ich auch bereits mehrere im Internet angegebene Versionen durchprobiert, also z.B. [Dateiname, Pfad)] oder [Pfad\Dateiname]... hat jemand eine Idee? Ich bin da recht verzweifelt und freue mich über jeden Hinweis und jede kleine Idee!
Vielen Dank! :)
Hallo,
nicht nur über den Dateipfad ...
INSERT INTO Output IN "U:\Daten\Testdatenbank_4.accdb" Output.xxx, Output.yyy, ....
SELECT A.xxx, A.yyyy, ....
FROM Output AS A INNER JOIN Zuordnung AS B ON A.xxx = B.xxx AND A.yyy = B.yyyy
WHERE A.zzz <> 463310 AND A.zzz = B.zzz OR B.zzz=0
Beachte, dass die Anzahl sowie der Datentyp der übergebenen Felder gleich dem Zielort sein muss!
ZitatUnd so habe ich die Formel verstanden:
Woher beziehst Du bei SQL
Formeln?
Ich verstehe vor allem Deine Klammerinflation nicht, Du im Ergebnis offensichtlich auch nicht.
Die Abfrage könnte etwa so aussehen wie folgt, wobei ich die Diskrepanz zwischen Ziel- und Quellfeldern in Anzahl und Inhalt (vermutet aus Bezeichnung) nicht angefasst habe. Eine übersichtliche Darstellung hilft somit schon mal beim Zählen:
INSERT INTO
[\\U:\Daten\Testdatenbank_4.accdb].Output(
XXX,
YYY,
ZZZ,
Summe,
Summe_Updated
)
SELECT
A.XXX,
A.YYY,
A.ZZZ,
A.Summe,
B.Einschränkung,
B.Hauptniederlassung,
B.Niederlassung
FROM
Output AS A
INNER JOIN Zuordnung AS B
ON A.XXX = B.XXX
AND
A.YYY = B.YYY
WHERE
(
A.ZZZ < 463310
OR
A.ZZZ > 463310
)
AND
A.ZZZ = B.ZZZ
OR
B.ZZZ = 0
MfGA
ebs