gpt4 book ai didi

mysql - 如何根据上个月最畅销的基于mysql查询的样式对Magento中的产品进行排序?

转载 作者:行者123 更新时间:2023-11-28 23:27:43 25 4
gpt4 key购买 nike

我设法覆盖了 Mage/Catalog/Model/Config.php 并创建了一个方法来添加一个名为“按畅销商品排序”的新排序选项。

我还添加了一个 where 语句,我可以在其中获取上个月的数据,但集合不会输出所有产品,仅输出上个月购买的产品(我需要对所有产品进行排序产品,不仅仅是上个月的产品)。

没有 where 语句,查询输出正确。

关于如何解决这个问题的任何想法?

    public function sortByTopSelling($dir){
$today = time();
$last = $today - (60*60*24*30);
$from = date("Y-m-d H:i:s", $last);
$to = date("Y-m-d H:i:s", $today);

$this->getSelect()->joinLeft('sales_flat_order_item AS order_item','e.entity_id = order_item.product_id',
'SUM(order_item.qty_ordered) AS ordered_qty')->where('`order_item`.`created_at` > "'.$from.'"')->group('e.entity_id')->order('ordered_qty DESC');

}

最佳答案

在作为评论或答案回复之间争论了一段时间,因为我不是 100% 确定 Magento 代码。

数据库:

select e.entity_id, SUM(order_item.qty_ordered) AS ordered_qty
from magento.catalog_product_entity as e
left join magento.sales_flat_order_item AS order_item on e.entity_id = order_item.product_id and order_item.created_at > DATE_FORMAT(NOW() ,'%Y-%m-01')
group by e.entity_id
order by ordered_qty DESC;

我没有可靠的方法来测试 Magento 代码,但它应该是这样的:

 $this->getSelect()->joinLeft('sales_flat_order_item AS order_item',"e.entity_id = order_item.product_id and order_item.created_at > $from",
'SUM(order_item.qty_ordered) AS ordered_qty')->group('e.entity_id')->order('ordered_qty DESC');

另一种方法是将 or order_item.created_at is null 添加到 where,但这比另一个连接条件需要更长的运行时间,在我的 Magento 数据库中,查询已经花费了惊人的 90 秒,但我的表格很大,它可能适合您的实现。

关于mysql - 如何根据上个月最畅销的基于mysql查询的样式对Magento中的产品进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38568529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com