Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Junte 2 tabelas na coluna que muda dinamicamente


Isso é doloroso de fazer no MySQL por alguns motivos. Primeiro, o MySQL não tem um suporte muito bom para somas cumulativas, que é o que você deseja comparar.

E segundo, seu conjunto de resultados é um pouco fraco. Faz mais sentido mostrar todos os ins registros que contribuem para cada outs registro, não apenas um deles.

Para isso, você pode usar uma junção em somas cumulativas, que se parece com isso:
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)

Aqui é o violino SQL.