OleDB + Jet: Syntaxfehler in Betrieb Join
-
04-10-2019 - |
Frage
Ich habe eine komplexe Abfrage für meine Access-Datenbank aufgebaut und in dem Zugang funktioniert es wie ein Zauber. Aber wenn ich versuche die gleiche Abfrage in meinem Programm über OleDB Ich bekomme die Ausnahme „Syntax Error in Join-Operation“ laufen. Keine weiteren Informationen.
SELECT
MainTable.Main_dbID,
D0.Kvp_Value AS ["Value"]
FROM (MainTable
INNER JOIN (
SELECT Main_dbID, Kvp_Value
FROM KVPTable
WHERE Kvp_Code IN (1, 2, 4)
) AS D0
ON D0.Main_dbID = MainTable.Main_dbID)
WHERE Main_Time <= ? AND Main_Time >= ?;
Ich habe die Abfrage nach unten so weit zerbrochen, wie ich es fühlte sich immer noch repräsentativ zu sein. Der Grund, warum ich bin mit einem subselect anstelle einer direkten Verknüpfung ist, dass ich zu meinem Schlüsselwert-Tabelle mehrfach verbinden müssen verschiedene Schlüssel in verschiedenen Spalten zu setzen. Ich konnte nicht, dass andere Art und Weise zu arbeiten.
Ich arbeite mit C # 2.0 und Visual Studio 2008 in dem Fall, dass relevant ist.
Lösung
Gefunden das Problem. Die Art, wie ich die Abfrage eingegeben brach es ...
EDIT: Wie Sie mir die Abfrage über mehrere Zeilen verteilt sehen können, so dass es ein wenig einfacher ist, zu lesen. Wenn ich es in meinem Source-Code eingefügt dies geschah:
"SELECT FooField" +
"FROM BarTable;";
was dazu führt, "FooFieldFROM Stehtisch SELECT;" - so offensichtlich nicht gültige Syntax, es ist schmerzhaft. Ich wusste nur nicht erkennen, dass es zuerst ...
Andere Tipps
Es ist sicherlich eine verwirrende Botschaft. Was falsch ist, ist das zusätzliche Komma:
D0.Value AS ["Value"], <-- here
Ich hoffe, dass diese Namen sind nicht real Feld (Spalte) Namen, weil Wert und Zeit reservierte Worte sind und endlose Probleme verursachen wird. Ich schlage vor, dass zumindest Du sie in eckigen Klammern eingeschlossen werden, wenn sie echte Namen sind.