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

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

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

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

43f363f4b243f5755a164a10b8a8e491.png

我们首先使用下面的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';

输出如下:

4f971935131fdaf07f2ca17bccc1ab99.png

上图我们只截取了部分数据,那么这只是销量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'

得到的结果:

6dee538fd69fbe17c17dbf29fc2fb27e.png

下面我们和关联表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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值