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

update select

Estas en el tema de update select en el foro de Mysql en Foros del Web. tengo un tabla temporal articulo modelo color medida stock1 stock2 stoct3 que se tiene que cargar de dos tablas : articulos y tblstock asi que ...
  #1 (permalink)  
Antiguo 13/12/2017, 07:40
 
Fecha de Ingreso: agosto-2002
Ubicación: Lleida
Mensajes: 506
Antigüedad: 21 años, 7 meses
Puntos: 0
update select

tengo un tabla temporal
articulo
modelo
color
medida
stock1
stock2
stoct3
que se tiene que cargar de dos tablas : articulos y tblstock

asi que lanzo un primer query tal como insert into tabla_tmp (articulo, modelo, color, medida) (select id, modelo, color, medida from articulos where ...condiciones)
hasta aquí perfecto, me queda una tabla con una extraccion de articulos segun la seleccion del where

ahora necesito cargar los campos stock a partir de la tabla stock pero solo de los articulos que tengo en la tabla temporal
como hago el update

update tabla_tmp set stock1=(select stock from tblstock where tda=1 and articulo ????

como le digo que actualize el campo stock1 de los articulos de la tabla temporal.

graicas
  #2 (permalink)  
Antiguo 13/12/2017, 09:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: update select

para que haces la temporal? si puedes hacer eso desde un mismo query:


Código MySQL:
Ver original
  1. set campo=new_campo
  2. (
  3. select id, modelo, color, medida from articulos where ...condiciones
  4. ) as t1 where table.campo_id=t1.campoid
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 19/12/2017, 11:26
 
Fecha de Ingreso: agosto-2002
Ubicación: Lleida
Mensajes: 506
Antigüedad: 21 años, 7 meses
Puntos: 0
Respuesta: update select

lo siento, pero no lo entiendo. quizas es que no me explico bien. Libra, no se que valor le pones a new_campo

tengo la tmp_informe y la stockmon,

debo actualizar el campo sto1 de la tmp_informe con el campo unistock de la stockmon, pero sólo los registros de la stockmon que tda=1 y que coinciden los id's tabla1.id=tabla2.id

hago stock pero me da error.

UPDATE tmp_informe
set sto1=t1.uniStock
from (select idmonturaStocK, uniStock from stockmon where stockmon.tdaStock='1') as t1
where tmp_informe.idMontura=t1.idmonturaStock
  #4 (permalink)  
Antiguo 19/12/2017, 11:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: update select

y que error te da?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 20/12/2017, 00:49
 
Fecha de Ingreso: agosto-2002
Ubicación: Lleida
Mensajes: 506
Antigüedad: 21 años, 7 meses
Puntos: 0
Respuesta: update select

SQL error 1064 error de sintaxis cerca del 'from ....' en linea 3
  #6 (permalink)  
Antiguo 20/12/2017, 05:53
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, 4 meses
Puntos: 2658
Respuesta: update select

Es que está MUY mal escrita.
Te recomiendo que cuando hagas consultas de esa clase, leas el manual de referencia: UPDATE Syntax
Código SQL:
Ver original
  1. UPDATE tmp_informe TI INNER JOIN stockmon ST ON TI.idMontura = ST.idmonturaStock
  2. SET TI.sto1 = ST.uniStock
  3. WHERE ST.tdaStock='1';
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, select, tabla, update
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 21:40.