use*_*124 3 mysql wordpress woocommerce
我正在为我的Wordpress数据库创建一些SQL视图,以便更轻松地查看通过WooCommerce插件生成的在线订单.我熟悉WooCommerce结构以及数据存储的位置,但作为一个SQL新手我陷入了最后的障碍.
我已经能够使用此参考创建所有订单详细信息的第一个视图:
http://codecharismatic.com/sql-script-to-get-all-woocommerce-orders-including-metadata/
现在我需要为每个订单创建一个类似的订单项视图.有2个表存储订单商品详情:
wp_woocommerce_order_items wp_woocommerce_order_itemmeta
我已经能够从wp_woocommerce_order_items表创建基本记录列表,如下所示:
SELECT order_item_id,order_item_name,order_item_type,order_id
FROM ocm_woocommerce_order_items
ORDER BY order_id
Run Code Online (Sandbox Code Playgroud)
这会返回一个很好的记录列表,如下所示:
order_item_id order_item_name order_item_type order_id
2 Widgets line_item 9
3 Widgets line_item 10
4 Widgets line_item 11
5 Woo Logo line_item 473
6 Woo Logo line_item 473
Run Code Online (Sandbox Code Playgroud)
我现在想为wp_woocommerce_order_itemmeta表中的每个订单项添加其他列.此表包含每个订单项的多个记录,如下所示:
meta_id order_item_id meta_key meta_value
136 16 _qty 4
137 16 _tax_class
138 16 _product_id 87
139 16 _variation_id 0
140 16 _line_subtotal 36
141 16 _line_total 36
142 16 _line_subtotal_tax 3.6
143 16 _line_tax 3.6
Run Code Online (Sandbox Code Playgroud)
我想将每个转换为一个新列,因此我的输出将包括:
order_item_id, order_item_name, order_item_type, order_id, qty, tax_class, product_id, variation_id, line_subtotal, line_total, line_subtotal_tax, line_tax
Run Code Online (Sandbox Code Playgroud)
我不确定在这里使用哪种SQL语法 - 我尝试使用与上面链接类似的语法但是到目前为止还没能使它工作,并且不确定这是否确实是正确的语法.
我设法通过反复试验来解决这个问题.这是最终有效的查询:
select
p.order_id,
p.order_item_id,
p.order_item_name,
p.order_item_type,
max( CASE WHEN pm.meta_key = '_product_id' and p.order_item_id = pm.order_item_id THEN pm.meta_value END ) as productID,
max( CASE WHEN pm.meta_key = '_qty' and p.order_item_id = pm.order_item_id THEN pm.meta_value END ) as Qty,
max( CASE WHEN pm.meta_key = '_variation_id' and p.order_item_id = pm.order_item_id THEN pm.meta_value END ) as variationID,
max( CASE WHEN pm.meta_key = '_line_total' and p.order_item_id = pm.order_item_id THEN pm.meta_value END ) as lineTotal,
max( CASE WHEN pm.meta_key = '_line_subtotal_tax' and p.order_item_id = pm.order_item_id THEN pm.meta_value END ) as subTotalTax,
max( CASE WHEN pm.meta_key = '_line_tax' and p.order_item_id = pm.order_item_id THEN pm.meta_value END ) as Tax,
max( CASE WHEN pm.meta_key = '_tax_class' and p.order_item_id = pm.order_item_id THEN pm.meta_value END ) as taxClass,
max( CASE WHEN pm.meta_key = '_line_subtotal' and p.order_item_id = pm.order_item_id THEN pm.meta_value END ) as subtotal
from
ocm_woocommerce_order_items as p,
ocm_woocommerce_order_itemmeta as pm
where order_item_type = 'line_item' and
p.order_item_id = pm.order_item_id
group by
p.order_item_id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7068 次 |
| 最近记录: |