10/10/2018, 11:40 
               
            Cho e hỏi một chút về sql với
               
					Mình đang làm phần các sản phẩm đã xem. Mình dùng cookie và đã lưu đc thành một mảng các id sản phẩm đã xem. Ví dụ: $id = array('6','2','5','4','3','1').
Mình truy vấn vào db và lấy ra các sản phẩm có id tương ứng dùng câu lệnh:
select * from products where id in(6,2,5,4,3,1)
hoặc select * from products where (id=6 OR id=2 OR id=5 OR id=4 OR id=3 OR id=1)
thì lấy ra được danh sách các sản phẩm đã xem tuy nhiên thứ tự của các bản ghi lại bị sắp xếp thành 1,2,3,4,5,6.
Mình muốn các bản ghi vẫn giữ nguyên thứ tự. Các bạn giúp mình với
Mình đã tìm đc 1 cách nhưng xem ra ko đc tối ưu lắm
	
				            
            
         Mình truy vấn vào db và lấy ra các sản phẩm có id tương ứng dùng câu lệnh:
select * from products where id in(6,2,5,4,3,1)
hoặc select * from products where (id=6 OR id=2 OR id=5 OR id=4 OR id=3 OR id=1)
thì lấy ra được danh sách các sản phẩm đã xem tuy nhiên thứ tự của các bản ghi lại bị sắp xếp thành 1,2,3,4,5,6.
Mình muốn các bản ghi vẫn giữ nguyên thứ tự. Các bạn giúp mình với
Mình đã tìm đc 1 cách nhưng xem ra ko đc tối ưu lắm
Code:
	select * from products where id = 6 union all select * from products where id = 2 union all select * from products where id = 5 union all select * from products where id = 4 union all select * from products where id = 3 union all select * from products where id = 1
            Bài liên quan
         
               
            




Làm trên SQL tạm thời em chưa nghĩ ra với mảng hỗn độn, nhưng bác có thể trả ra câu lệnh SQL mà bác query theo kiểu mảng có key là ID trỏ tới value là đối tượng bác lấy ra.
Như thế ra ngòai giao diện bác lấy mảng đó ra theo id thì không cần để ý tới thứ tự mảng
$viewed = array(6,2,4,3,1); //danh sách sản phẩm đã xem theo thứ tự //sau khi query được mảng như thế này hoặc biến đổi nó về như thế này $queries = array( 1 => array( 'title' => 'Product 1', //...thuộc tính khác ), 2 => array( //...thuộc tính ), //...tuơng tự ); //trình bày giao diện //foreach mảng lưu danh sách sản phẩm đã xem foreach($viewed as $view_id) { echo $queries[$view_id]['title']; } //đúng thứ tự luôn nhỉ?dữ liệu
15f703e2fbccef3307500df62b9944ad_43233489.untitled1.png
mysql:
SELECT * FROM mn_product WHERE product_id in (13,10,12) ORDER
BY FIELD(product_id, 13,10,12);
e095f7ef70e50e8d72baf5d78f3c1045_43233491.untitled2.png