PDA

Ver la Versión Completa : Sql para cambiar inf en un tabla a partir de los datos de otra


ALVARO RUBIO
03-03-2012, 18:40:18
Poseo una base con tres tablas, Terceros, Facturas, Vendedores
Facturas tiene entre otros los campos numero, tercero, vendedor
Terceros tiene entre otros Nit, nombre y Vendedor
Vendedor tiene entre otros Codigovendedor, nombre vendedor

Necesito colocar para cada una de las facturas de la tabla facturas, el campo vendedor que esta en la tabla terceros,

Para mas explicacion, los vendedores que estan en este momento en la tabla facturas, no son los que necesito.
Se modifico la tabla terceros y se reasignaron los vendedores y necesito actualizar la tabla facturas con los nevos vendedores asignados en la tabla terceros.

Lo anterior lo reuqiero hacer mediante un sql
Lo de la tabla vendedores es solo un comentario.

SI me pueden indicar algun error en la enunciacion del tema muchas gracias.

ecfisa
03-03-2012, 19:38:32
Hola Alvaro.

No tengo como comprobarlo en este equipo, pero probá de este modo:

UPDATE FACTURAS T1
SET T1.VENDEDOR = (SELECT T2.VENDEDOR FROM TERCEROS T2
WHERE T1.TERCERO = T2.ID)


Saludos.

ALVARO RUBIO
05-03-2012, 23:00:13
Funciona perfecto, En la tabla de facturas tengo la fecha, si quisiera hacer el cambio solo para un rango de fechas enero01 de 2010 a Duciembre31 de 2011,

ecfisa
05-03-2012, 23:25:37
Hola Alvaro.

Tendrías que especificarlo como condición en la clausula WHERE:

UPDATE FACTURAS T1
SET T1.VENDEDOR = (SELECT T2.VENDEDOR FROM TERCEROS T2
WHERE T1.TERCERO = T2.ID)
WHERE T1.FECHA BETWEEN :F_DESDE AND :F_HASTA


Saludos.

ALVARO RUBIO
05-03-2012, 23:50:50
Gracias, lo prueba sobre mi base de datos.

ALVARO RUBIO
06-03-2012, 04:18:27
Gracias, al aplicarlo me genera error SQL linea 4 char 23
El campo es tipo DATE, lo he colocado 01/01/2010, (01/01/2011) y "01/01/2010", y 12/31/2011, (12/31/2011) y despues del and 12/31/2011",
Se que es por el formato pero no he podido saber como va.

Muy novato debe de ser muy sencillo, Gracias

ecfisa
06-03-2012, 04:51:19
Hola Alvaro.

En lugar de 12/31/2011 intenta con 31/12/2011 (con el formato: dia/mes/año).

Si no funciona así, vas a tener que detallar un poco más. Es decir: El mensaje de error en forma literal (click sobre el error, Ctrl+C para copiar y Ctrl+V para pegar aquí), lenguaje, manejador de bd y componentes con los que trabajas.

Saludos.

ALVARO RUBIO
06-03-2012, 22:08:01
Gracias,
estoy trabajando en ello.



Alvaro Rubio