Pregunta

He construido una consulta compleja para mi base de datos de acceso y en el acceso funciona como un encanto. Pero cuando trato de ejecutar la misma consulta en mi programa a través de OleDB consigo la excepción "Error de sintaxis en la operación de unión". No hay más información.

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

He roto la consulta hacia abajo por lo que yo sentía que sea todavía representativa. La razón por la que estoy usando una subselección en lugar de unirse a una directa es que necesito para unirse a mi llave valor de la tabla varias veces para poner diferentes teclas en diferentes columnas. No pude conseguir que funcione de otra manera.

Estoy trabajando con C # 2.0 y Visual Studio 2008 en caso de que sea relevante.

¿Fue útil?

Solución

encontrado el problema. La forma en que entré en la consulta rompió ...

EDIT: Como se puede ver Distribuí la consulta a través de múltiples líneas, así que es un poco más fácil de leer. Cuando me pegué en mi código fuente que esto sucedió:

"SELECT FooField" +
"FROM BarTable;";

que se traduce en "SELECT FooFieldFROM Tabla bar;" - por lo que, obviamente, no sintaxis válida es doloroso. Yo no me di cuenta por primera vez ...

Otros consejos

Sin duda, es un mensaje confuso. Lo que está mal es la coma adicional:

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

espero que esos nombres no son nombres reales de campo (columna), ya que el valor y el tiempo son palabras reservadas y causarán problemas sin fin. Sugiero que al menos se los encierre entre corchetes, si son nombres reales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top