sql >> Databáze >  >> RDS >> Mysql

Spojte 2 tabulky na dynamicky se měnícím sloupci

To je v MySQL bolestivé z několika důvodů. Za prvé, MySQL nemá příliš dobrou podporu pro kumulativní součty, což je to, co chcete porovnávat.

A za druhé, vaše sada výsledků je trochu slabá. Smysluplnější je zobrazit vše ins záznamy, které přispívají ke každému outs záznam, ne jen jeden z nich.

Pro tento účel můžete použít spojení na kumulativních součtech, které vypadá takto:

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)

Zde je SQL Fiddle.



  1. alter table upravit sloupec v databázi Oracle

  2. Jak zkopírovat tabulku z jedné tabulky na vzdáleném serveru do tabulky na jiné vzdálené databázi mysql5.6 s PDO

  3. CHYBA:Chyba 1005:Nelze vytvořit tabulku (chyba:121)

  4. Převod tabulky MySQL s nesprávně zakódovanými daty do UTF-8