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

Dos cuestiones con Update

Estas en el tema de Dos cuestiones con Update en el foro de Mysql en Foros del Web. 1) El primer problema es que quiero usar en un update un valor que sea el último valor (específicamente un index primary key) añadido en ...
  #1 (permalink)  
Antiguo 20/06/2009, 22:52
 
Fecha de Ingreso: junio-2008
Mensajes: 71
Antigüedad: 15 años, 9 meses
Puntos: 0
Dos cuestiones con Update

1) El primer problema es que quiero usar en un update un valor que sea el último valor (específicamente un index primary key) añadido en X tabla.

Es decir, algo así. En la tablaA, quiero actualizar el campo1 con el valor más nuevo del primary key de la tablaB.

Hasta ahora me he visto la función LAST() y la función LAST_INSERT_ID(), pero parece que solo sirven para retornar valores en select o en having, incluso esta última parece que no me sirve si otra persona (o no se si el manual se refiere a usuario de DB) hace una entrada e incrementa el valor.

Hasta ahora he tratado cosas como estas, desde medio lógicas hasta disparates a ver si me resultan:

Es decir algo así:
Código sql:
Ver original
  1. UPDATE tabla_1 AS t1, tabla_2 AS t2
  2.     SET
  3.         t1.campo1 = t2.campo_primarykey
  4.     WHERE
  5.         t1.campo_id = X AND
  6.         t2.campo_primarykey = MAX (t2.campo_primarykey)

Código sql:
Ver original
  1. UPDATE tabla_1 AS t1
  2.     SET
  3.         t1.campo1 = campo_primarykey
  4.     WHERE
  5.         t1.campo_id = X
  6.     HAVING
  7.         MAX (tabla_2.campo_primarykey) AS campo_primarykey

Código sql:
Ver original
  1. UPDATE tabla_1 AS t1, tabla_2 AS t2
  2.     SET
  3.         t1.campo1 = last_insert_id(tabla_2.campo_primarykey)
  4.     WHERE
  5.         t1.campo_id = X

Usando tanto MAX, como LAST, como LAST_INSERT_ID y nada.

¿alguna idea? ¿es posible lo que busco?

(olvidaba decir que sé que haciendo un select justo antes se acaba el dilema, pero quiero ahorrármelo )

2) Lo otro es que quisiera saber si es posible usar INNER JOIN con UPDATEs

Hasta ahora he venido usando cosas así:

Código sql:
Ver original
  1. UPDATE t1
  2.     SET
  3.         t1.campo1 = valor
  4.     WHERE
  5.         t1.campo1 = t2.campo1 AND
  6.         t2.campo2 = t3.campo2 AND
  7.         t3.campo3 = t4.campo4 AND
  8.         t4.campo5 = A;

Pero me recuerda mucho a como no deben hacerse los SELECT pudiéndose usar INNER JOINs y ya que vine a preguntar una cuestión de updates aprovecho el viaje para esta duda que siempre he tenido

Gracias adelantadas

Última edición por SebasSebas; 20/06/2009 a las 23:01
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 10:41.