Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bergabunglah dengan 2 tabel pada kolom yang berubah secara dinamis

Ini menyakitkan untuk dilakukan di MySQL karena beberapa alasan. Pertama, MySQL tidak memiliki dukungan yang sangat baik untuk jumlah kumulatif, yang ingin Anda bandingkan.

Dan kedua, set hasil Anda sedikit lemah. Lebih masuk akal untuk menunjukkan semua ins catatan yang berkontribusi pada setiap outs merekam, bukan hanya salah satunya.

Untuk tujuan ini, Anda dapat menggunakan gabungan pada jumlah kumulatif, yang terlihat seperti ini:

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)

Di sini adalah 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. Grup MySQL Dengan fungsionalitas dalam versi yang berbeda

  2. MySql:Tampilkan kolom tetapi kecualikan semuanya kecuali nama bidang

  3. Cara andal memulihkan gumpalan MySQL

  4. Pengantar tipe data MySQL

  5. Ubah string md5 yang disimpan menjadi nilai desimal di MySQL