sql >> Base de Datos >  >> RDS >> Mysql

Une 2 tablas en una columna que cambia dinámicamente

Esto es doloroso de hacer en MySQL por un par de razones. Primero, MySQL no tiene muy buen soporte para sumas acumulativas, que es lo que quieres comparar.

Y segundo, su conjunto de resultados es un poco débil. Tiene más sentido mostrar todos los ins registros que contribuyen a cada outs registro, no sólo uno de ellos.

Para este propósito, puede usar una unión en sumas acumuladas, que se ve así:

select o.*, (o.to_quantity  - o.quantity) as from_quantity,
       i.*
from (select o.*,
             (select sum(o2.quantity)
              from outs o2
              where o2.id <= o.id
             ) as to_quantity
      from outs o
     ) o join
     (select i.*,
             (select sum(i2.quantity)
              from ins i2
              where i2.id <= i.id
             ) as to_quantity
      from ins i
     ) i
     on (o.to_quantity  - o.quantity) < i.to_quantity and
        o.to_quantity > (i.to_quantity  - i.quantity)

Aquí es el violín SQL.