0

ajax と無限の scorll を使用して、製品リストの製品の束を取得するクエリがあります。最後に気付くと、製品のリスト間の「ページ」へのオフセットが使用されます。これは、この同じクエリが、20 個の製品に対して異なるオフセット (オフセットなし、オフセット 9、オフセット 18) で 3 回実行されることを意味します。

現在、ポジション順と is_in_stock を使用しています。私が抱えている問題は、管理者が各製品の位置を 1、2、3、4、5、6 などに更新しなかったため、すべての製品の位置が 1 に設定されていることです。

また、すべての位置が 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
4

1 に答える 1

0

実際に位置を設定するか、たとえば ID (auto_increment に設定する必要があります) など、製品を注文する別の方法を見つける必要があります。

于 2013-04-30T11:35:07.003 に答える