none
Consulta con SQL Server

    Question

  • Buenos  días: tengo la siguiente consulta de Actualización que me da problemas y no logro determinar el Error.

     

    UPDATE productos INNER JOIN (clientes INNER JOIN relcteprod ON (clientes.TipoDoc = relcteprod.TipoDoc) AND (clientes.NroDocumento = relcteprod.NroDocumento)) ON (productos.Sucursal = relcteprod.Sucursal) AND (productos.TipoProducto = relcteprod.TipoProducto) AND (productos.Clave1 = relcteprod.Clave1) AND (productos.Clave2 = relcteprod.Clave2) SET clientes.Ubicacion = "U" WHERE (((clientes.Caja)=99999) AND ((clientes.Orden)=99999) AND ((productos.Caja)=99999) AND ((productos.Orden)=99999) AND ((productos.FechaAlta_Producto) Between '01-01-2005' And '31-12-2010'));

    El ERROR que me da es el siguiente:

    Servidor: mensaje 156, nivel 15, estado 1, línea 1

    Sintaxis incorrecta cerca de la palabra clave 'INNER'.

    Servidor: mensaje 170, nivel 15, estado 1, línea 4

    Línea 4: sintaxis incorrecta cerca de 'clientes'.

    EL TEMA ES QUE SI HAGO CASI LA MISMA CONSULTA, PERO EN LUGAR DE ACTUALIZAR SOLO REALIZO UN SELECT, TODO FUNCIONA BIEN.
    AQUI LE DEJO LA CONSULTA SELECT QUE FUNCIONA SIN NINGÚN PROBLEMA.
    SELECT clientes.Ubicacion
    FROM productos INNER JOIN (clientes INNER JOIN relcteprod ON (clientes.NroDocumento = relcteprod.NroDocumento) AND (clientes.TipoDoc = relcteprod.TipoDoc))
    ON (productos.Clave2 = relcteprod.Clave2) AND (productos.Clave1 = relcteprod.Clave1) AND (productos.TipoProducto = relcteprod.TipoProducto) AND (productos.Sucursal = relcteprod.Sucursal)
    WHERE (((clientes.Caja)=99999) AND ((clientes.Orden)=99999) AND ((productos.Caja)=99999) AND ((productos.Orden)=99999) AND ((productos.FechaAlta_Producto) Between '01-01-2005' And '31-12-2010'));
    Les pido por favor me ayuden a solucionar este problema..!!!
    Muchas Gracias.-

     

    Thursday, May 05, 2011 4:24 PM

Answers

  • Hola.

    Tienes algunos errores de sintaxis. Las sentencias de actualización que pretendes realizar tienen una sintaxis más o menos así:

    update Tabla set campo1 = nuevoValor1, campo2 = nuevoValor2,...

    from Tabla inner join OtraTabla on...

     

    Hazlo así:

    Update productos set Campo1 = clientes.Ubicacion --> aquí tienes que poner los campos a actualizar y sus nuevos valores
    FROM productos INNER JOIN (clientes INNER JOIN relcteprod ON (clientes.NroDocumento = relcteprod.NroDocumento) AND (clientes.TipoDoc = relcteprod.TipoDoc))
    ON (productos.Clave2 = relcteprod.Clave2) AND (productos.Clave1 = relcteprod.Clave1) AND (productos.TipoProducto = relcteprod.TipoProducto) AND (productos.Sucursal = relcteprod.Sucursal)
    WHERE (((clientes.Caja)=99999) AND ((clientes.Orden)=99999) AND ((productos.Caja)=99999) AND ((productos.Orden)=99999) AND ((productos.FechaAlta_Producto) Between '01-01-2005' And '31-12-2010'));
    

     

    Si no lo logras, nos dices.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    Thursday, May 05, 2011 6:01 PM
    Moderator

All replies

  • Hola.

    Tienes algunos errores de sintaxis. Las sentencias de actualización que pretendes realizar tienen una sintaxis más o menos así:

    update Tabla set campo1 = nuevoValor1, campo2 = nuevoValor2,...

    from Tabla inner join OtraTabla on...

     

    Hazlo así:

    Update productos set Campo1 = clientes.Ubicacion --> aquí tienes que poner los campos a actualizar y sus nuevos valores
    FROM productos INNER JOIN (clientes INNER JOIN relcteprod ON (clientes.NroDocumento = relcteprod.NroDocumento) AND (clientes.TipoDoc = relcteprod.TipoDoc))
    ON (productos.Clave2 = relcteprod.Clave2) AND (productos.Clave1 = relcteprod.Clave1) AND (productos.TipoProducto = relcteprod.TipoProducto) AND (productos.Sucursal = relcteprod.Sucursal)
    WHERE (((clientes.Caja)=99999) AND ((clientes.Orden)=99999) AND ((productos.Caja)=99999) AND ((productos.Orden)=99999) AND ((productos.FechaAlta_Producto) Between '01-01-2005' And '31-12-2010'));
    

     

    Si no lo logras, nos dices.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    Thursday, May 05, 2011 6:01 PM
    Moderator
  • Hola qwalgrande..!!

     

    Muchas Gracias por la Respuesta, anduvo Perfecto. El unico detalle es que precisaba modificar un Campo en la Tabla Clientes y no en la Productos, pero la sintaxis está perfecta.

    Se me complica un poco cuando tengo tres Tablas Relacionadas.....

    De todas formas me quedó muy claro.

    Nuevamente gracias...!!!!

    Saludos.

     

    Martín.-

     

    Monday, May 09, 2011 2:26 AM