09/10/2018, 23:55
Help! [PHP] Làm sao để xác định vị trí của 1 đối tượng nào đó
Ví dụ mình có bảng danh sách hàng bán có dữ liệu gồm các cột (Mysql nhé) như sau: id, name, price, soluongdaban, soluongcon
Bây giờ có giá trị lần lượt như sau:
id - name - price - soluongdaban - soluongcon
1 - A - 300 - 3 - 10
2 - B - 400 - 1 - 20
.....
500 - C - 55 - 12 - 70
501 - D - 100 - 20 - 90
Giả sử mình muốn lấy ngẫu nhiên 1 giá trị nào đó, ví dụ mình lấy sản phẩm C chẳng hạn, thì mình biết cách query rồi.
Vậy bây giờ mình muốn biết xem là mặt hàng C này nó đứng thứ mấy trong dãy toàn bộ hàng mình có xếp theo chiều giảm dần của cột số lượng đã bán (column soluongdaban)
Please help. Cảm ơn nhiều
Quên không nói rõ là dùng PHP.
Bây giờ có giá trị lần lượt như sau:
id - name - price - soluongdaban - soluongcon
1 - A - 300 - 3 - 10
2 - B - 400 - 1 - 20
.....
500 - C - 55 - 12 - 70
501 - D - 100 - 20 - 90
Giả sử mình muốn lấy ngẫu nhiên 1 giá trị nào đó, ví dụ mình lấy sản phẩm C chẳng hạn, thì mình biết cách query rồi.
PHP Code:
$q = $mysql->query("SELECT * FROM ".$tb_prefix."sanpham WHERE sanpham_name = '"C"'");
Please help. Cảm ơn nhiều
Quên không nói rõ là dùng PHP.
Bài liên quan
SELECT COUNT(*)+1 FROM sanpham WHERE soluongdaban >= $sl
sẽ cho ra vị trí của sản phẩm C trong danh sách. Tuy vậy, tôi nghĩ vị trí này vẫn còn có 1 cái gì đó chưa chính xác (số lượng đã bán giống nhau?)
bạn nên test lại xem sao
theo ý bạn thì sản phẩm sẽ đếm là những sản phẩm có số lượng bán lớn hơn số đã bán của sản phẩm C, vậy, phải trừ 1 chứ nhỉ, sao lại cộng 1 để ra kq?
Mình cũng đang phân vân, vì nếu cùng = nhau về số sản phẩm bán đc sẽ xếp theo ABC.
Tất nhiên là mình có thể biết số lượng bán của sản phẩm C mà, và tất cả các sản phẩm khác nữa, nó đc lưu trong cột soluongban mà
okie, đó là 1 quyển sách về cách suy luận trong khi viết query. Tự tìm nha: tên sách + rar. Thực ra cũng ko nên đọc mấy quyển thuộc hệ expert voice đó, mà nếu cứ gặp đi gặp lại các vấn đề hóc búa thì cũng nên đọc xem người ta viết gì (tiếng Anh, tất nhiên). Dù bạn dùng PHP hay bất cứ ngôn ngữ lập trình nào , với bất kỳ db gì, thì cách tư duy của bạn (về query) vẫn ko đổi.
Mình stop đây, bb.
INSERT INTO temp (sp_id) SELECT id FROM sanpham ODER BY soluongsanpham DESC, name ASC
(tôi không sure lắm về syntax chỗ order by)
lúc này position của của temp sẽ là vị trí bạn muốn lấy. Với 5000 sp, có lẽ nên sử dụng type = HEAP