Mysql
 sql >> база данни >  >> RDS >> Mysql

Присъединете се към 2 таблици в динамично променяща се колона

Това е болезнено да се прави в MySQL по няколко причини. Първо, MySQL няма много добра поддръжка за кумулативни суми, което искате да сравните.

И второ, вашият набор от резултати е малко слаб. По-разумно е да се показват всички ins записи, които допринасят за всеки outs запис, а не само един от тях.

За тази цел можете да използвате обединяване на кумулативни суми, което изглежда така:

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)

Тук е SQL Fiddle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. #1242 - Подзаявката връща повече от 1 ред - mysql

  2. Извличане на MySQL с Kivy

  3. използване на променлива на средата за локална конфигурация на секвелизиране

  4. Не може да се зареди com.mysql.jdbc.Driver

  5. Вмъкване на многоизмерен php масив в mysql база данни