Tengo la impresión de que estás complicándolo innecesariamente.
Esto devuelve un sólo valor:
Entonces esto debería devolver un sólo registro, si
id_requisicion es único:
En ese caso, esto sería redundante:
Código MySQL:
Ver originalSELECT t1.id_requisicion
, t1.descripcion
, t1.cantidad
, t1.id_articulo
(SELECT id_requisicion
, descripcion
, cantidad
, id_articulo
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 (SELECT t1.id_requisicion
, t1.descripcion
, t1.cantidad
, t1.id_articulo
FROM (SELECT id_requisicion
, descripcion
, cantidad
, id_articulo
GROUP BY t1.cantidad
, t1.descripcion
)t2
ON activo.descripcion
= t2.descripcion
SET activo.cantidad
= activo.cantidad
- t2.cantidad
por lo que bien podría escribirse así:
Código MySQL:
Ver original ON A.descripcion
= t2.descripcion
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.