10/10/2018, 11:15
Hỏi về câu lệnh SQL
Nhờ các bác giúp tôi một chút
Đây là một bảng dùng để quản lý hàng tồn kho, có dạng :
Mã hàng Số lượng Giờ Ngày
AAA 1000 21:30:08 05/24/2011
BBB 3000 21:05:31 05/24/2011
AAA 1500 20:10:22 05/24/2011
AAA 1800 20:00:46 05/24/2011
CCC 2200 19:28:52 05/24/2011
BBB 2600 19:16:23 05/24/2011
CCC 1500 19:07:46 05/24/2011
CCC 3200 19:03:55 05/24/2011
BBB 2600 18:11:31 05/24/2011
Số lượng từng mặt hàng sẽ tăng hoặc giảm tùy theo tình hình nhập/xuất. Bây giờ nếu muốn lấy ra số lượng mỗi mặt hàng vào cuối ngày 24/05, sẽ cần lấy ra các records AAA, BBB, CCC ở thời điểm cuối cùng trong ngày mà chúng chịu tác động tăng/giảm.
Vậy, phải viết câu lệnh SQL như thế nào để cho ra kết quả mong muốn mà không phải truy vấn nhiều lần theo từng mã hàng?
Đây là một bảng dùng để quản lý hàng tồn kho, có dạng :
Mã hàng Số lượng Giờ Ngày
AAA 1000 21:30:08 05/24/2011
BBB 3000 21:05:31 05/24/2011
AAA 1500 20:10:22 05/24/2011
AAA 1800 20:00:46 05/24/2011
CCC 2200 19:28:52 05/24/2011
BBB 2600 19:16:23 05/24/2011
CCC 1500 19:07:46 05/24/2011
CCC 3200 19:03:55 05/24/2011
BBB 2600 18:11:31 05/24/2011
Số lượng từng mặt hàng sẽ tăng hoặc giảm tùy theo tình hình nhập/xuất. Bây giờ nếu muốn lấy ra số lượng mỗi mặt hàng vào cuối ngày 24/05, sẽ cần lấy ra các records AAA, BBB, CCC ở thời điểm cuối cùng trong ngày mà chúng chịu tác động tăng/giảm.
Vậy, phải viết câu lệnh SQL như thế nào để cho ra kết quả mong muốn mà không phải truy vấn nhiều lần theo từng mã hàng?
Bài liên quan
từ cột datetime , chỉ vài dòng php đơn giản đều có thể xuất ra time or date or anything dễ dàng.
vấn đề của bạn giờ chỉ còn là order by blah blah blah
tham khảo mysql datetime
Đấy là tôi minh họa như nhìn từ phía ngoài giao diện người dùng, còn trong db thì phải timestamp hết chứ bác.
Cái khó ở đây là làm sao tối ưu hóa câu lệnh SQL. Nếu phải dùng 3 câu lệnh cho 3 sản phẩm để lấy ra con số tồn kho cuối ngày của sản phẩm đó thì không ổn. Vì thực tế có hàng ngàn mặt hàng chứ không ít.
Nếu phải thiết kế lại db thì theo các bác nên thiết kế thế nào cho mục đích trên dễ đạt được?
@ suutamcongnghe : bạn có kinh nghiệm thì gợi ý cho tớ chút, đang bí. Project này khá độc đáo, yêu cầu dạng webApp, dùng Javascript/Gear DB để làm việc trên web browser, không có server script gì cả Đúng sở trường nên tớ nhận đại. Nhưng mà chưa có kinh nghiệm quản lý kho bao giờ. Chỉ biết đại khái về xuất-nhập-tồn, tạm thời làm thử mấy cái bảng lưu lại từng sự kiện trong ngày xem sao đã.
Trong đó có các field là ID, Mãhàng, Sốlượng, Đơngiá, Ngày (tất nhiên là có giờ)
Và 1 query TỒN. Cái tồn này, cần lúc nào thì query lúc đó.
số tồn sản phẩm x ngày 1-1-2011 là 300
số tồn sản phẩm x ngày 2-1-2011 là 500
số tồn sản phẩm y ngày 2-1-2011 là 300
số tồn sản phẩm x ngày 3-1-2011 là 200
...
mỗi lần nhập xuất sẽ lấy số tồn mới nhất rồi +/- rùi save lại.
nếu làm vậy thì cậu làm phức tạp bài toán ,thường người ta sẽ build table theo dạng action
nhập 300 sản phẩm x ngày 1-1-2011
xuất 200 sản phẩm x ngày 2-1-2011
nhập 300 sản phẩm y ngày 3-1-2011
xuất 100 sản phẩm x ngày 4-1-2011
và 1 table khác
sản phẩm x hiện thời là 1000
sản phẩm y hiện thời là 1500
như vậy các query đơn giản và dễ tính toán.