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

Actualizar campos seleccionando id mayor

Estas en el tema de Actualizar campos seleccionando id mayor en el foro de Mysql en Foros del Web. Tengo este problema nunca habia hecho un update seleccionando el valor mas grande por ejemplo que el valor es 5 y necesito actualizar los campos ...
  #1 (permalink)  
Antiguo 12/07/2011, 00:30
 
Fecha de Ingreso: enero-2010
Mensajes: 302
Antigüedad: 14 años, 2 meses
Puntos: 3
Actualizar campos seleccionando id mayor

Tengo este problema nunca habia hecho un update seleccionando el valor mas grande por ejemplo que el valor es 5 y necesito actualizar los campos fechasalida, horasalida de acuerdo con el numero mayor los campos tiene date y time respectivamente como se puede construir esta consulta ?
  #2 (permalink)  
Antiguo 12/07/2011, 00:56
 
Fecha de Ingreso: enero-2010
Mensajes: 302
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Actualizar campos seleccionando id mayor

bueno buscando encontre lo siguiente
Código PHP:
UPDATE `sesionesSET fechasalida=NOW(), horasalida=NOW() 
WHERE id=(SELECT MAX(idFROM sesiones); 
pero me sale un error referente a FROM sesiones donde me dice que no lo puedo utilizar, siendo asi como lo puedo hacer gracias
  #3 (permalink)  
Antiguo 12/07/2011, 03:32
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: Actualizar campos seleccionando id mayor

No puedes leer y modificar una tabla en la misma consulta. Son operaciones contradictorias. MySQL no puede adivinar qué vas a modificar, por eso no te deja hacerlo.

Además de eso, hay funciones diferentes para obtener horas y días. NOW() te devuelve un sólo objeto DATETIME, mientras que tu quieres obtenerlos por separado.
Revisa las funciones de MySQL:
MySQL::Capítulo 12. Funciones y operadores

El valor a buscar lo tienes que obtener previamente para luego usarlo.
Código MySQL:
Ver original
  1. UPDATE `sesiones` SET fechasalida=CURDATE(), horasalida=CURTIME()
  2. WHERE id=valorbsucado;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 12/07/2011 a las 03:43
  #4 (permalink)  
Antiguo 13/07/2011, 18:18
 
Fecha de Ingreso: enero-2010
Mensajes: 302
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Actualizar campos seleccionando id mayor

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No puedes leer y modificar una tabla en la misma consulta. Son operaciones contradictorias. MySQL no puede adivinar qué vas a modificar, por eso no te deja hacerlo.

Además de eso, hay funciones diferentes para obtener horas y días. NOW() te devuelve un sólo objeto DATETIME, mientras que tu quieres obtenerlos por separado.
Revisa las funciones de MySQL:
MySQL::Capítulo 12. Funciones y operadores

El valor a buscar lo tienes que obtener previamente para luego usarlo.
Código MySQL:
Ver original
  1. UPDATE `sesiones` SET fechasalida=CURDATE(), horasalida=CURTIME()
  2. WHERE id=valorbsucado;
Pero esto se puede usar con un inner Join como lo utilize aca
Código PHP:
$nueva_cantidad mysql_query ("UPDATE `activo` INNER JOIN (SELECT t1.id_requisicion, t1.descripcion, t1.cantidad, t1.id_articulo FROM (SELECT id_requisicion, descripcion, cantidad, id_articulo FROM facturas2 
WHERE id_requisicion = (select max(id_requisicion) from facturas2) 
)t1 GROUP BY t1.cantidad, t1.descripcion)t2 ON
activo.descripcion = t2.descripcion
SET activo.cantidad = activo.cantidad - t2.cantidad"
); 
pero en este caso no se como aplicarlo para que me haga lo que necesito me bloque, me confundi

Etiquetas: campos, mayor
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:19.