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

Update en una tabla.

Estas en el tema de Update en una tabla. en el foro de Bases de Datos General en Foros del Web. Hola, necesito vuestra ayuda, necesito hacer un update en una tabla vinculandola con otra, me explico: Dos tablas: Articulos(cdg, cuaderno,..........) y Movimientos(articulo, cuadern, ........) En ...
  #1 (permalink)  
Antiguo 01/12/2009, 09:58
 
Fecha de Ingreso: mayo-2009
Mensajes: 22
Antigüedad: 15 años
Puntos: 0
Update en una tabla.

Hola, necesito vuestra ayuda, necesito hacer un update en una tabla vinculandola con otra, me explico:

Dos tablas:

Articulos(cdg, cuaderno,..........) y Movimientos(articulo, cuadern, ........)

En la tabla de articulo, cada uno tiene su cuaderno introducido, pues necesitaria igualarlo en la tabla movimientos, pero no me sale, ya es porp ura casualidad ya que lo estoy haciendo con varias sentencias tipo:

update movimien set cuaderno = 1 where articulo in (select cdg from articulo where cuaderno = 1);
update movimien set cuaderno = 2 where articulo in (select cdg from articulo where cuaderno = 2);
update movimien set cuaderno = 3 where articulo in (select cdg from articulo where cuaderno = 3);

Pero claro quiero una sentencia que lo haga todo sin tener que ir cuaderno por cuaderno.

Muchas gracias compañeros!!!.

Saludos.
  #2 (permalink)  
Antiguo 01/12/2009, 10:31
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Update en una tabla.

Así sería estimado:
Código sql:
Ver original
  1. UPDATE movimien SET cuaderno = A.cuaderno
  2. FROM movimien M
  3. INNER JOIN articulo A ON M.articulo = A.cdg
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 01/12/2009, 10:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 22
Antigüedad: 15 años
Puntos: 0
Respuesta: Update en una tabla.

Cita:
Iniciado por flaviovich Ver Mensaje
Así sería estimado:
Código sql:
Ver original
  1. UPDATE movimien SET cuaderno = A.cuaderno
  2. FROM movimien M
  3. INNER JOIN articulo A ON M.articulo = A.cdg
Hola muchas gracias, pero con mi gestor de SQL no puedo usar los INNER JOIN, yo utilizo COSMOS TRANSTOOLS, que es muy parecido a ORACLE pero no igual 100%.

Alguna otra manera de hace un INNER JOIN sin usarlo??, he probado a igual los campos pero nada.

Saludos y muchas gracias
  #4 (permalink)  
Antiguo 01/12/2009, 11:21
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Update en una tabla.

Asi?
Código sql:
Ver original
  1. UPDATE movimien
  2. SET cuaderno = A.cuaderno
  3. FROM movimien M, articulo A
  4. WHERE M.articulo = A.cdg
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 01/12/2009, 11:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Update en una tabla.

¿Estás seguro de que no permite JOINS?
Porque la descripción de la Web de TransTOOLs hace referencia al SQl estandar.
Y según esta imagen: 7/7 − SQL Interactivo., debería admitir los JOIN:
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 01/12/2009, 11:41
 
Fecha de Ingreso: mayo-2009
Mensajes: 22
Antigüedad: 15 años
Puntos: 0
Respuesta: Update en una tabla.

Cita:
Iniciado por flaviovich Ver Mensaje
Asi?
Código sql:
Ver original
  1. UPDATE movimien
  2. SET cuaderno = A.cuaderno
  3. FROM movimien M, articulo A
  4. WHERE M.articulo = A.cdg
Hola, tampoco, lo siento, así ya lo probé yo y nada me dice que la tabla (a) no existe en la base de datos.

Que rollo de TransTools.

Gracias por intertar ayudarme, alguna otra idea?.
  #7 (permalink)  
Antiguo 01/12/2009, 11:45
 
Fecha de Ingreso: mayo-2009
Mensajes: 22
Antigüedad: 15 años
Puntos: 0
Respuesta: Update en una tabla.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Estás seguro de que no permite JOINS?
Porque la descripción de la Web de TransTOOLs ]hace referencia al SQl estandar.
Y según esta imagen: /7 − SQL Interactivo., debería admitir los JOIN:
Hola, pues no funciona, ni funciona este update:

Código SQL::
Ver original
  1. UPDATE movimien SET cuaderno = A.cuaderno
  2.       FROM movimien M
  3.       INNER JOIN articulo A ON M.articulo = A.cdg

En este me pone el UPDATE, SET, FROM en rojo, como que reconoce que es un comando, pero el INNER JOIN lo deja en negro y no funciona, error:

Ni este tampoco:

Código SQL::
Ver original
  1. UPDATE movimien
  2.       SET cuaderno = A.cuaderno
  3.       FROM movimien M, articulo A
  4.       WHERE M.articulo = A.cdg


En los dos me dice que la tabla (a) no esta declarada en la clausula FROM.

Que harto estoy del TransTools!!!!:

Saludos y gracias.
  #8 (permalink)  
Antiguo 01/12/2009, 11:46
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Update en una tabla.

Entonces no uses alias, usa los nombres de las tablas para identificar sus respectivos campos.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #9 (permalink)  
Antiguo 01/12/2009, 11:56
 
Fecha de Ingreso: mayo-2009
Mensajes: 22
Antigüedad: 15 años
Puntos: 0
Respuesta: Update en una tabla.

Cita:
Iniciado por flaviovich Ver Mensaje
Entonces no uses alias, usa los nombres de las tablas para identificar sus respectivos campos.
Nada de nada, incluso he cambiado el orden en el FROM, primero puse articulo y despues movimien y nada, el mismo error, la tabla (articulo) no esta declarada en la clausula FROM

Asi:

Código SQL:
Ver original
  1. UPDATE movimien
  2.       SET cuaderno = articulo.cuaderno
  3.       FROM articulo, movimien
  4.       WHERE movimien.articulo = articulo.cdg

Muchisimas gracias y siento las molestias.
  #10 (permalink)  
Antiguo 01/12/2009, 12:13
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Update en una tabla.

Hay una pregunta en las FAQs:
192. Intentamos hacer un "Update" con el método "Select" en un programa, pero éste no funciona. ¿Por qué?
http://www.transtools.com/products/e...s/resp_192.htm
Has probado eso?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #11 (permalink)  
Antiguo 01/12/2009, 12:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Update en una tabla.

Probemos el SQL estandar:
Código sql:
Ver original
  1. UPDATE movimien M INNER JOIN articulo A ON M.articulo = A.cdg
  2. SET cuaderno = A.cuaderno;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 11/12/2009, 05:09
 
Fecha de Ingreso: mayo-2009
Mensajes: 22
Antigüedad: 15 años
Puntos: 0
Respuesta: Update en una tabla.

Cita:
Iniciado por flaviovich Ver Mensaje
Hay una pregunta en las FAQs:
192. Intentamos hacer un "Update" con el método "Select" en un programa, pero éste no funciona. ¿Por qué?
[url]http://www.transtools.com/products/es/faqs_cosmos/resp_192.htm[/url]
Has probado eso?

Hola, esto seria para realizar el update mediante el codigo fuente, no en el gestor de SQL directamente.


Muchas gracias.
  #13 (permalink)  
Antiguo 11/12/2009, 05:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 22
Antigüedad: 15 años
Puntos: 0
Respuesta: Update en una tabla.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Probemos el SQL estandar:
Código sql:
Ver original
  1. UPDATE movimien M INNER JOIN articulo A ON M.articulo = A.cdg
  2. SET cuaderno = A.cuaderno;
Hola, todo lo que lleve INNER JOIN no lo sabe interpretar, ya lo he dejado por imposible, les he escrito a los de TransTools a ver que me dicen.

Saludos y muchas gracias a todos por vuestro tiempo y esfuerzo. GRACIAS!!!!.
  #14 (permalink)  
Antiguo 11/12/2009, 06:12
 
Fecha de Ingreso: julio-2006
Ubicación: Madrid
Mensajes: 943
Antigüedad: 17 años, 9 meses
Puntos: 56
Respuesta: Update en una tabla.

Hola,
Y quitando el Inner? Sólo con el join

Saludos
  #15 (permalink)  
Antiguo 15/07/2010, 09:57
 
Fecha de Ingreso: mayo-2009
Mensajes: 22
Antigüedad: 15 años
Puntos: 0
Respuesta: Update en una tabla.

Hace unos meses publique este post y no di la solucion que habia encontrado.

Al final con esta sentencia solucione el problema, ya que todo lo anterior publicado no lo soporta el lenguaje CTSQL:

Código:
update movimien set cuaderno = 
(select articulo.cuaderno from articulo where articulo.cdg = movimien.articulo)
Muchas gracias a todos.
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 17:52.