我有一个查询,使用ajax和无限scorll获取产品列表的一堆产品。如果你注意到最后,它会在产品列表之间使用offset来“page”,这意味着同样的查询运行3次,不同的偏移量(没有偏移,偏移9,偏移18)为20个产品。
现在它按位置和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 :(得分:0)
您必须确实设置位置,或者找到另一种订购产品的方式,例如ID(您应该设置为auto_increment)。