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

Tiếp theo:làm thế nào để lập mô hình giảm giá cho các mặt hàng trong cơ sở dữ liệu?

Thiết kế của ProductPricing bảng cho phép chúng tôi không bao giờ phải xóa dữ liệu giá cũ (đôi khi ban quản lý muốn có một báo cáo dựa trên dữ liệu đó). Với những gì bạn đã mô tả ở trên, bạn sẽ bắt đầu như thế này (Tôi đã thay đổi ngày bắt đầu để dễ dàng nhận ra rằng có, đây là giá ban đầu khi hệ thống đi vào hoạt động):

ProductPricing
   1   |    Jan 1, 1970, 00:00:00 |   Jan 1, 2038, 00:00:00  |   10$ |   10$

Bây giờ, giả sử bạn đưa ra mức giá chiết khấu cho táo của mình và bạn muốn chủ động và thiết lập hệ thống cho thời điểm bán hàng kết thúc:

ProductPricing
   1   |    Jan 1, 1970, 00:00:00 |  Dec 20, 2011, 00:00:00  |   10$ |   10$
   1   |   Dec 20, 2011, 00:00:01 |  Dec 26, 2011, 00:00:00  |  7.5$ |   10$
   1   |   Dec 26, 2011, 00:00:01 |   Jan 1, 2038, 00:00:00  |   10$ |   10$

Những gì chúng tôi đã làm ở đây là:

  1. Cập nhật bản ghi hiện có với dấu thời gian 2038, thay đổi endDateTimeStamp trường để phản ánh thời điểm bắt đầu bán hàng
  2. Chèn một bản ghi mới để xác định việc bán hàng
  3. Chèn một bản ghi mới khác để phản ánh lại mức giá bình thường

Không có dấu thời gian chồng chéo, bạn được đảm bảo nhận được một bản ghi khi truy vấn cơ sở dữ liệu về giá của mình. Vì vậy,

SELECT p.Name, pp.price, pp.original_price
FROM Product p
INNER JOIN ProductPricing pp ON pp.productId = p.productId
WHERE NOW() BETWEEN pp.startDateTimeStamp AND pp.endDateTimeStamp

sẽ cung cấp cho bạn danh sách sản phẩm với giá hiện tại.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bảng mysqldump mà không kết xuất khóa chính

  2. AWS Aurora MySQL serverless:cách kết nối từ MySQL Workbench

  3. php:SQLSTATE [HY000] [2002] Không thể thực hiện kết nối vì máy mục tiêu đã chủ động từ chối nó

  4. Làm cách nào để lấy kích thước của các bảng trong cơ sở dữ liệu MySQL?

  5. tham gia trên hai khóa ngoại từ cùng một bảng trong SQL