查找Magento2订单销量MySQL字段值序列化办法

我们在Magento 2中进行数据库查询最近一个月的销量的时候,我们需要的是安装sku的下拉选项进行查找,既是看看今年那个产品卖得最好,销售的最好。那么我们如何做呢?

首先我们要打开Magento 2的数据库找到表sales_order_item,这里面有sku,item,product_options,name等等其他的一些数据。

查找Magento2订单销量MySQL字段值序列化办法

我们首先使用下面的sql语句查询当年的销量情况,例如要查询的是sku为WJ06-的这个产品,前段页面显示的下拉选项在product_options字段里面的option_value 的值,记住这个是序列化存储在数据库中的。所以我们要得出这个值,需要提取到这个option_value的值。

例如我们通过下面的语句可以查看:

 
SELECT a.increment_id,b.product_options,b.sku,b.qty_ordered,b.created_at FROM sales_order a JOIN sales_order_item   b ON a.entity_id = b.order_id AND b.parent_item_id IS NULL  WHERE b.sku LIKE '%wj06-%' AND b.created_at > '2019-01-01';

输出如下:

查找Magento2订单销量MySQL字段值序列化办法

上图我们只截取了部分数据,那么这只是销量sku为WJ06的产品,那么下拉框选项还是没有找到。别急这个选项在product_options,我们看看上图方框框的那个完整的数据,如下所示:

{"info_buyRequest":{"qty":1,"super_attribute":{"136":"167","93":"50"},"options":[]},
"attributes_info":[{"label":"Size","value":"XS","option_id":136,"option_value":"167"},
{"label":"Color","value":"Blue","option_id":93,"option_value":"50"}],"simple_name":
"Minerva LumaTech™ V-Tee-XS-Blue","simple_sku":"WS08-XS-Blue","product_calculations":
1,"shipment_type":0}
 

通过上面我们可以看到option_value的值为50,那么50对应的下拉数据是什么呢,这就要另一个表catalog_product_option_type_title 其中50的值为catalog_product_option_type_title的option_type_id 值所相等。那么这个行的titie 字段既是这个下拉选项。

获取得到option_value

我们要使用mysql的SUBSTRING_INDEX

SELECT a.increment_id,CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(b.product_options,'option_value":"',-1),'"',1) AS SIGNED) AS VALUE ,b.sku,b.qty_ordered,b.created_at FROM sales_order a JOIN sales_order_item b ON a.entity_id = b.order_id AND b.parent_item_id IS NULL WHERE b.sku LIKE '%wj06-%' AND b.created_at > '2019-01-01'

得到的结果:

查找Magento2订单销量MySQL字段值序列化办法

下面我们和关联表catalog_product_option_type_title如下:

SELECT gg.*,ff.title FROM
(
SELECT a.increment_id,a.store_id,CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(b.product_options,'option_value":"',-1),'"',1) AS SIGNED)  AS VALUE ,b.sku,b.qty_ordered,b.created_at FROM sales_order a JOIN sales_order_item   b ON a.entity_id = b.order_id AND b.parent_item_id IS NULL  WHERE b.sku LIKE '%wj06-%' AND b.created_at > '2019-01-01'
)
AS gg
JOIN catalog_product_option_type_title ff ON ff.option_type_id= gg.VALUE AND gg.store_id = ff.store_id ORDER BY gg.increment_id DESC
 

执行后完美解决,数据库字段序列化。

相关文章

  1. Magento2网站每天都宕机,需要重启服务器

    我在Magento 2.2.2中有一个电子商务网站,它几乎每天都在宕机死机。每当它发生故障时,用户得到的网站太长时间也会响应而且从未加载。为了让网站再次运行,我必须重新启动服务器然...

    2020-02-25
  2. 通过SQL在Magento中导入产品评论

    当客户看到具有好评的产品时,他们更有可能做出购买决定。 另外,一些搜索引擎为具有产品评论的网站提供了比没有评论的网站更高的排名。 由于Magento不支持导入产品评论的默认功...

    2020-04-23
  3. 如何在Magento2安装配置中文汉化包

    magento2版本与magento1相比较做中文汉化变化还是很大,今天最模板整理修正如下: 常用的安装方式有2种: 方法一:通过composer安装中文包; 安装中文包: composer require mageplaza/magento-2-chi...

    2020-04-23
  4. Magento2后台登录用户输入错误被锁住办法

    Magento 2有时候在登录后台账号的时候,不小心输入的错误密码次数过多,这个时候Magento 2为了安全的考虑将你这个用户给锁住,既是不能登录了,即使你想起了正确的密码在输入登录也...

    2020-04-24
  5. Magento2控制台命令总结

    Magento 2开发与Magento 1完全不同Magento 2更依赖命令行操作整个系统,例如这些命令实际上在管理诸如缓存,升级,部署模式,索引器等方面非常方便。您可以通过运行以下命令检查整个命...

    2020-04-24
  6. 将Magento2从企业版迁移/降级到社区版

    Magento 2企业版(EE)是Magento 2社区版(CE)的付费版本。如果您是一家渴望成长并期望巨大网站流量的企业,那么EE是您公司的最佳解决方案。此外,企业版完全由Magento团队支持。订户通...

    2020-04-24
  7. 解决Magento1发送邮件Email代码乱码办法

    我们在做magento1活动或者开发插件的时候 ,时常为了通知用户就是用系统的email发送,但是如果你发送的内容是是日语或者其他语言的时,出现了乱码,发送email代码如下。 private functi...

    2020-04-24
  8. 如何在magento2.3 nginx配置https

    现在有很多magento网站免费的https,基本上90%上线的网站都用了https。 但是很多朋友对magento里的nginx配置https不熟悉,现在我们就来整理下。 一,准备工作 你至少需要提供如下必须用品...

    2020-04-23
  9. 查找Magento2订单销量MySQL字段值序列化办

    我们在Magento 2中进行数据库查询最近一个月的销量的时候,我们需要的是安装sku的下拉选项进行查找,既是看看今年那个产品卖得最好,销售的最好。那么我们如何做呢? 首先我们要打...

    2020-04-24