2013-04-30 93 views
0

我有一个查询使用ajax和无限scorll获取产品列表的一堆产品。如果您注意到最后,它会使用偏移量到产品列表之间的“页面”,这意味着对于20个产品,相同的查询会以不同的偏移量(无偏移量,偏移量9,偏移量18)运行3次。在MySQL中使用分页按LIMIT和OFFSET重复产品

现在它正在使用的位置和is_in_stock秩序。我遇到的问题是,所有产品的位置设置为1,因为管理员没有更新每个产品的位置为1,2,3,4,5,6等。

而且由于所有位置都设置为1,偏移功能无法正常工作,因此在偏移量的不同页面上显示重复的产品。

我被迫必须设置位置,还是有另一种方法来做到这一点?也许我应该检查客户是否设置了位置,如果不是,请删除ORDER BY位置语法?

想法?

SELECT `e`.*, `cat_index`.`position` AS `cat_index_position`, `price_index`.`price`, `price_index`.`tax_class_id`, `price_index`.`final_price`, IF(price_index.tier_price IS NOT NULL, LEAST(price_index.min_price, price_index.tier_price), price_index.min_price) AS `minimal_price`, `price_index`.`min_price`, `price_index`.`max_price`, `price_index`.`tier_price`, IF((IF(cisi.use_config_manage_stock = 1, 1, cisi.manage_stock) = 1), cisi.is_in_stock, 1) AS `is_saleable`, `cisi`.`is_in_stock` AS `inventory_in_stock` FROM `catalog_product_entity` AS `e` 
INNER JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=1 AND cat_index.visibility IN(2, 4) AND cat_index.category_id='3' 
INNER JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.website_id = '1' AND price_index.customer_group_id = 0 
LEFT JOIN `cataloginventory_stock_item` AS `cisi` ON (cisi.product_id=e.entity_id) GROUP BY `e`.`entity_id` 
    ORDER BY `is_in_stock` desc, `cat_index`.`position` ASC LIMIT 9 OFFSET 9 

回答

0

你将不得不通过ID(你应该设置为AUTO_INCREMENT)的确设置的位置,或者找到另一种方式来订购的产品,例如。

相关问题