sql >> Database >  >> RDS >> Mysql

Word lid van 2 tabellen op dynamisch veranderende kolom

Dit is om een ​​aantal redenen pijnlijk om te doen in MySQL. Ten eerste biedt MySQL geen erg goede ondersteuning voor cumulatieve bedragen, en dat is wat je wilt vergelijken.

En ten tweede is je resultatenset een beetje zwak. Het is logischer om alles te laten zien de ins records die bijdragen aan elke outs opnemen, niet slechts één van hen.

Voor dit doel kunt u een join gebruiken op cumulatieve bedragen, die er als volgt uitziet:

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)

Hier is de SQL Fiddle.



  1. Ik wil meerdere afbeeldingen uit de database weergeven in jsp (ik breng servlet in kaart), dus in jsp m ga ik weergeven in src van img-tag

  2. SQL - Datum/tijd-formaat converteren

  3. Negeer dubbele sleutelfout in MySQL op INSERT

  4. Hoe transaction_timestamp() werkt in PostgreSQL