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

Как да извадя инвентара и продажбата с помощта на подзаявка на mysql?

За да постигнете желания резултат, трябва да изчислите текущите общи продажби на продукти. За да получите смислени данни, данните в sales таблицата трябва да бъде подредена в хронологичен ред. Така че имате нужда от поне още едно поле за сортиране на данни - няма значение дали е времеви печат или id поле. Да предположим, че има id поле в таблицата за продажби. Това е заявка, за да получите това, което описахте:

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

Вторият екземпляр на sales таблица, наречена sales_2 се използва за изчисляване на сумата от по-ранни продажби (sales_2.id<sales.id )

Можете да изключите sales.id от select клауза, но трябва да я запазите в group by и 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. Нулирайте MySQL root паролата с помощта на оператор ALTER USER след инсталиране на Mac

  2. Получаване на грешка в MYSQL:Код на грешка:2006 - MySQL сървърът е изчезнал

  3. Как да предотвратим неявното извършване на mysql

  4. Опитвам се да разберем защо бихте използвали този тип настройка на базата данни

  5. Изберете 3-те най-скорошни записа, където стойностите на една колона са различни