Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Update

Estas en el tema de Update en el foro de Bases de Datos General en Foros del Web. Hola Foreros acudo nuevamente a ustedes para resolver una duda. Necesito actualizar un campo llamado "DESCR" de una tabla llamada "TBL" pero con los datos ...
  #1 (permalink)  
Antiguo 20/12/2007, 13:44
Avatar de zeusdelolimpo  
Fecha de Ingreso: agosto-2007
Mensajes: 54
Antigüedad: 16 años, 8 meses
Puntos: 0
Update

Hola Foreros acudo nuevamente a ustedes para resolver una duda.

Necesito actualizar un campo llamado "DESCR" de una tabla llamada "TBL" pero con los datos que tiene otro campo llamado " DESCR "(de las mismas caracteristicas) de otra tabla llamada "LANG"
  #2 (permalink)  
Antiguo 20/12/2007, 14:00
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: Update

2 Maneras de hacerlo:

Primera: buscás con una consulta el valor con el cual vas actualizar la tabla TBL. Luego hacés el update en la tabla TBL.
Algo así quedaría:
SELECT descr FROM tbl WHERE alguna_condicion1;

El resultado de esa consulta lo guardás en una variable (por ejemplo "valor")
Luego hacés el update:
UPDATE lang SET descr = valor WHERE alguna_condición2;


La otra manera sería combinar las 2 consultas:
UPDATE lang SET descr = (SELECT descr FROM tbl WHERE alguna_condicion1) WHERE alguna_condicion2;

No se si en SQL Server se pueden anidar las consultas de esa manera, pero sería una manera de hacerlo.
  #3 (permalink)  
Antiguo 20/12/2007, 14:14
Avatar de zeusdelolimpo  
Fecha de Ingreso: agosto-2007
Mensajes: 54
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Update

Ok gracias entiendo; el problema no es pasar un unico valor si no que tengo que pasar mas de mil y entonses eso si me tardaria mas tiempo en hacerlos todos asi.


Mira ya lo habia hecho de manera inversa y me quedo asi:

INSERT INTO ps_gl_account_LANG
SELECT SETID, ACCOUNT,'ESP',EFFDT,DESCR,DESCRSHORT
FROM .ps_gl_account_TBL
where ACCOUNT like 'M%';

Bueno aqui antes borre toda la tabla LANG y pase los campos "SETID, ACCOUNT, 'ESP' , EFFDT, DESCR, DESCRSHORT" de la TBL a la LANG.

Cabe mencionar que en la tabla LANG estos campos que pase son los unicos que contiene entonses no hay mayor problema. Pero en la tabla TBL hay muchos campos y no puedo hacer lo mismo.
  #4 (permalink)  
Antiguo 20/12/2007, 18:03
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: Update

zeusdelolimpo

Si vas a ACTUALIZAR es con UPDATE y la forma correcta es:

UPDATE t1 SET c1 = t2.c1
FROM tutabla1 t1 JOIN
tutabla2 t2 ON t1.ID = t2.ID
  #5 (permalink)  
Antiguo 20/12/2007, 18:19
Avatar de zeusdelolimpo  
Fecha de Ingreso: agosto-2007
Mensajes: 54
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Update

Cita:
Iniciado por iislas Ver Mensaje
zeusdelolimpo

Si vas a ACTUALIZAR es con UPDATE y la forma correcta es:

UPDATE t1 SET c1 = t2.c1
FROM tutabla1 t1 JOIN
tutabla2 t2 ON t1.ID = t2.ID

Muchas gracias Islas como siempre mi mejor opcion, me quedo claro pero lo que no entiendo es como seria eso de " tutabla1" y "tutabla2"
que es lo que tengo que poner ahi... por que las t1 y t2 son las tablas tanto la que voy a actualizar y de donde voya sacar loa datos respectivamente no ...

Espero no sea molestia
  #6 (permalink)  
Antiguo 21/12/2007, 11:58
Avatar de zeusdelolimpo  
Fecha de Ingreso: agosto-2007
Mensajes: 54
Antigüedad: 16 años, 8 meses
Puntos: 0
Sonrisa Re: Update

ya lo intente y no se si me falte algo por que me marca un error pero no entiendo como solucionarlo, el error dice :

Se ha encintrado una señal imprevista "UPDATE PS_GL_ACCOUNT_TBL SET DESCR =PS_GL_" A CONTINUACION DE BEGIN-OF-STATEMENT". eNTRE LAS SEÑALES ESPERADAS SE PUEDE INCLUIR "<SPACE>". SQLSTATE=42601. Asi termina el error pero que es ya le meti espacios por donde sea se los quite y no funciona me sigue sacando el mismo error.


y el Scrip quedo asi

UPDATE ps_gl_account_TBL SET DESCR = ps_gl_account_LANG.DESCR
FROM ps_gl_account_TBL JOIN ps_gl_account_LANG ON
ps_gl_account_TBL.ACCOUNT LIKE 'M%'
AND ps_gl_account_LANG.ACCOUNT LIKE 'M%'
AND ps_gl_account_TBL.ACCOUNT = ps_gl_account_LANG.ACCOUNT;

Última edición por zeusdelolimpo; 21/12/2007 a las 12:04
  #7 (permalink)  
Antiguo 21/12/2007, 15:31
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: Update

Hay errores en tu query, ¿Donde esta el WHERE de esta comparacion ps_gl_account_TBL.ACCOUNT LIKE 'M%'?
  #8 (permalink)  
Antiguo 26/12/2007, 14:54
Avatar de zeusdelolimpo  
Fecha de Ingreso: agosto-2007
Mensajes: 54
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Update

Me dices que le hace falta el where ahi es donde va??
Otra pregunta no puedo poner mas condiciones o llaves, despues de que pongo el "ON"

Sera que me tira el error por que estoy en DB2??

agradesco su apoyo.


UPDATE PS_GL_ACCOUNT_TBL
SET DESCR = PS_GL_ACCOUNT_LANG.DESCR
FROM PS_GL_ACCOUNT_TBL B
JOIN PS_GL_ACCOUNT_LANG A
ON PS_GL_ACCOUNT_TBL.ACCOUNT = PS_GL_ACCOUNT_LANG.ACCOUNT
WHERE A.ACCOUNT LIKE 'M%' AND B.ACCOUNT LIKE 'M%';
  #9 (permalink)  
Antiguo 02/01/2008, 17:08
Avatar de zeusdelolimpo  
Fecha de Ingreso: agosto-2007
Mensajes: 54
Antigüedad: 16 años, 8 meses
Puntos: 0
Exclamación no se como hacerlo

No se como hacer este Update, y ya no se donde mas buscar.

Alguien me puede instruir si se puede utilizar el UPDATE y el JOIN juntos y si se puede utilizar para DB2 que es de IBM??... si se puede utilizar? como es la sintaxis que debo de seguir?
  #10 (permalink)  
Antiguo 03/01/2008, 12:00
Avatar de zeusdelolimpo  
Fecha de Ingreso: agosto-2007
Mensajes: 54
Antigüedad: 16 años, 8 meses
Puntos: 0
De acuerdo gracias

Que creen foreros ya me salio; de todas maneras muchas gracias a los interesados en mi tema se los agradesco y pues aqui les dejo el codigo como me quedo:

UPDATE ACCOUNT_TBL
SET DESCR = (SELECT A.DESCR
FROM ACCOUNT_LANG A
WHERE A.ID = ACCOUNT_TBL.ID
AND A.ACCOUNT = ACCOUNT_TBL.ACCOUNT
AND A.EFFDT = ACCOUNT_TBL.EFFDT
AND A.LANGUAGE_CD = 'ESP')
WHERE ACCOUNT LIKE 'M%';

como dato complementario les digo que estoy trabajando en DB2 de IBM

gracias a todos, como siempre me fue muy util la informacion que me pudieron proporcionar

Última edición por zeusdelolimpo; 03/01/2008 a las 12:09
  #11 (permalink)  
Antiguo 08/01/2008, 19:00
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Re: Update

Entonces colocar la consulta en el foro de MS SQL Server no fue la mejor opción. Movido a DB Generales.

Saludos.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:54.