Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQL Tham gia cùng một bảng dựa trên tem thời gian và mức tồn kho

Dịch sang SQL không khó lắm, nhưng hiệu suất có thể kém. Thao tác này sẽ giúp bạn có dấu thời gian khi sản phẩm còn lại trong kho:

SELECT inv.*,
 ( SELECT MIN(`inv2`.`in_stock_at`)
   FROM inventories AS inv2
   WHERE inv2.`product_id` = inv.`product_id`   -- same product
     AND inv2.`pusher_id` = `inv`.`pusher_id`   -- same pusher
     AND `inv2`.`created_at` > inv.`created_at` -- later timestamp
     AND `inv2`.`item_count` > 0                -- in stock
 ) AS inStockAgain_at
from `inventories` AS inv
WHERE inv.`item_count` <= 0   -- out of stock
 -- AND inv.`product_id`=9

Chỉnh sửa:

Việc xóa các hàng liên tiếp không có hàng phức tạp hơn:

SELECT inv.*, dt.inStockAgain_at
FROM inventories AS inv
JOIN
 ( 
   SELECT product_id, pusher_id, 
      MIN(created_at) AS min_created_at,
     inStockAgain_at
   FROM
    (
      SELECT product_id, pusher_id, created_at,
       ( SELECT MIN(inv2.created_at)
         FROM inventories AS inv2
         WHERE inv2.product_id = inv.product_id -- same product
           AND inv2.pusher_id = inv.pusher_id   -- same pusher
           AND inv2.created_at > inv.created_at -- later timestamp
           AND inv2.item_count > 0              -- in stock
       ) AS inStockAgain_at
      FROM inventories AS inv
      WHERE inv.item_count <= 0  
    ) AS dt
   GROUP BY product_id, pusher_id, inStockAgain_at
 ) AS dt
ON inv.product_id = dt.product_id
AND inv.pusher_id = dt.pusher_id 
AND inv.created_at = dt.min_created_at 

Xem 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. Cách nhập một bảng vào cơ sở dữ liệu mysql bằng dòng lệnh

  2. mysql:nhận số lượng bản ghi giữa hai ngày-giờ

  3. Tham dự Streak MySQL Query

  4. Windows Batch Script để sao lưu cơ sở dữ liệu MySQL cục bộ &chỉ giữ N THƯ MỤC mới nhất với các tệp sao lưu

  5. Cloud 9 IDE không thể kết nối với cơ sở dữ liệu