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

Bagaimana cara mengurangi inventaris dan penjualan menggunakan subquery mysql?

Untuk mencapai hasil yang diinginkan, Anda perlu menghitung total penjualan produk yang berjalan. Untuk mendapatkan data yang berarti, data di sales tabel harus diurutkan secara kronologis. Jadi, Anda memerlukan setidaknya satu bidang lagi untuk mengurutkan data - tidak masalah apakah itu stempel waktu, atau id bidang. Mari kita asumsikan ada id bidang dalam tabel penjualan. Ini adalah kueri untuk mendapatkan apa yang Anda jelaskan:

SELECT 
    sales.id,
    sales.store_id,
    sales.product_id,
    inventories.quantity-IFNULL(SUM(sales_2.quantity), 0) as inventory,
    sales.quantity as sales,
    inventories.quantity-IFNULL(SUM(sales_2.quantity), 0) - sales.quantity as remaining
FROM
    sales
        INNER JOIN
    inventories ON inventories.store_id = sales.store_id
        AND inventories.product_id = sales.product_id
        LEFT JOIN
    sales AS sales_2 ON sales_2.store_id = sales.store_id
        AND sales_2.product_id = sales.product_id
        AND sales_2.id < sales.id
GROUP BY sales.id , sales.store_id , sales.product_id
ORDER BY sales.id

Contoh kedua dari sales tabel bernama sales_2 digunakan untuk menghitung jumlah penjualan sebelumnya (sales_2.id<sales.id )

Anda dapat mengecualikan sales.id dari select klausa, tetapi Anda harus menyimpannya di group by dan order by .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat menghapus atau memperbarui baris induk:batasan kunci asing gagal

  2. MySQL:hapus nilai duplikat berurutan

  3. Laravel Eloquent mendapatkan hasil yang dikelompokkan berdasarkan hari

  4. Masuk-Otentikasi ke database mysql jarak jauh

  5. parse.com alternatif sumber terbuka untuk backend