Domanda

Ho costruito una query complessa per la mia base di dati di accesso e di accesso funziona come un fascino. Ma quando provo a fare funzionare la stessa query nel mio programma via OleDB ottengo l'eccezione "Errore di sintassi nella operazione di join". Nessun ulteriore informazioni.

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 >= ?;

Ho rotto il basso di query per quanto mi è sembrato di essere ancora rappresentativo. Il motivo per cui sto usando un subselect invece di una diretta join è che ho bisogno di iscriverti per la mia chiave valore di tabella più volte per mettere le chiavi diverse in diverse colonne. Non ho potuto ottenere quello per funzionare in altro modo.

Sto lavorando con C # 2.0 e Visual Studio 2008 nel caso in cui è rilevante.

È stato utile?

Soluzione

Trovato il problema. Il modo in cui ho inserito la query si è rotto ...

EDIT: Come potete vedere ho distribuito la query su più righe, quindi è un po 'più facile da leggere. Quando ho incollato nel mio codice sorgente questo è accaduto:

"SELECT FooField" +
"FROM BarTable;";

che si traduce in "SELEZIONE FooFieldFROM BarTable;" - quindi, ovviamente, non sintassi valida è doloroso. Semplicemente non mi rendo conto che prima ...

Altri suggerimenti

E 'certamente un messaggio confuso. Quello che non va è la virgola in più:

D0.Value AS ["Value"],  <-- here

spero quei nomi non sono reali campo nomi (colonna), perché il valore ed il tempo sono parole riservate e causerà problemi a non finire. Suggerisco che almeno li racchiudi tra parentesi quadre, se sono veri nomi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top