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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top