Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak odjąć zapasy i sprzedaż za pomocą podzapytania mysql?

Aby osiągnąć pożądany wynik, musisz obliczyć bieżące sumy sprzedaży produktów. Aby uzyskać sensowne dane, dane w sales tabela musi być uporządkowana chronologicznie. Potrzebujesz więc co najmniej jeszcze jednego pola do sortowania danych — nie ma znaczenia, czy jest to znacznik czasu, czy id pole. Załóżmy, że istnieje id pole w tabeli sprzedaży. To jest zapytanie, aby uzyskać to, co opisałeś:

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

Drugie wystąpienie sales tabela o nazwie sales_2 służy do obliczania sumy wcześniejszej sprzedaży (sales_2.id<sales.id )

Możesz wykluczyć sales.id z select klauzula, ale musisz trzymać ją w group by i 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. Wyjście Pythona zlib, jak odzyskać z tabeli mysql utf-8?

  2. Jakie są optymalne rozmiary varchar dla MySQL?

  3. Wysyłanie danych formularza do MySQL za pomocą nodejs w/ Express

  4. Programowa aktualizacja zamówień Woocommerce

  5. przechowywanie kwot pieniężnych w mysql