Ver Mensaje Individual
  #12 (permalink)  
Antiguo 13/07/2011, 20:32
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como crear triggers

Tengo la impresión de que estás complicándolo innecesariamente.
Esto devuelve un sólo valor:
Código MySQL:
Ver original
  1. (SELECT max(id_requisicion) FROM facturas2)
Entonces esto debería devolver un sólo registro, si id_requisicion es único:
Código MySQL:
Ver original
  1. SELECT id_requisicion, descripcion, cantidad, id_articulo
  2. FROM facturas2
  3. WHERE id_requisicion = (SELECT max(id_requisicion) FROM facturas2)
En ese caso, esto sería redundante:
Código MySQL:
Ver original
  1. SELECT t1.id_requisicion, t1.descripcion, t1.cantidad, t1.id_articulo
  2.         (SELECT id_requisicion, descripcion, cantidad, id_articulo
  3.         FROM facturas2
  4.         WHERE id_requisicion = (SELECT max(id_requisicion) FROM facturas2) )t1
  5. GROUP BY t1.cantidad, t1.descripcion
Porque agrupar sobre una consulta que devuelve un sólo registro, es verdaderamente redundante.
En ese caso, el resto de los campos son innecesarios, así que esto:
Código MySQL:
Ver original
  1. UPDATE `activo`
  2.     INNER JOIN
  3.     (SELECT t1.id_requisicion, t1.descripcion, t1.cantidad, t1.id_articulo
  4.     FROM    (SELECT id_requisicion, descripcion, cantidad, id_articulo
  5.             FROM facturas2
  6.             WHERE id_requisicion = (SELECT max(id_requisicion) FROM facturas2) )t1
  7.     GROUP BY t1.cantidad, t1.descripcion)t2 ON activo.descripcion = t2.descripcion
  8. SET activo.cantidad = activo.cantidad - t2.cantidad
por lo que bien podría escribirse así:
Código MySQL:
Ver original
  1. UPDATE `activo` A
  2.     INNER JOIN
  3.     (SELECT descripcion, cantidad FROM facturas2 ORDER BY id_requisicion DESC LIMIT 1) t2
  4.     ON A.descripcion = t2.descripcion
  5. SET A.cantidad = A.cantidad - t2.cantidad
Y el resultado debería ser el mismo.

Mi duda es que no termino de comprender qué es lo que estás buscando, porque agrupar por descripción y por cantidad, cuando estás buscando el id_requisición, no parece muy razonable.

¿Podrías explicar un poco mejor qué es lo que buscas y qué es lo que quieres actualizar.

Lo que si me parece dudoso es que el campo que relacione la tabla ACTIVO con FACTURAS2 sea descripcion. Un campo de texto no me parece una buena idea como FK.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)