-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexport-orders.sql
More file actions
88 lines (77 loc) · 4.35 KB
/
export-orders.sql
File metadata and controls
88 lines (77 loc) · 4.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
SELECT
-- Order Meta
p.ID AS order_id,
p.post_status AS order_status,
p.post_date AS order_date,
max( CASE WHEN pm.meta_key = '_order_total' AND p.ID = pm.post_id THEN pm.meta_value END ) AS order_total,
max( CASE WHEN pm.meta_key = '_order_tax' AND p.ID = pm.post_id THEN pm.meta_value END ) AS order_tax,
-- Payment
max( CASE WHEN pm.meta_key = '_paid_date' AND p.ID = pm.post_id THEN pm.meta_value END ) AS paid_date,
max( CASE WHEN pm.meta_key = '_payment_method' AND p.ID = pm.post_id THEN pm.meta_value END ) AS payment_method,
max( CASE WHEN pm.meta_key = '_transaction_id' AND p.ID = pm.post_id THEN pm.meta_value END ) AS transaction_id,
-- Order Items
(
SELECT group_concat( order_item_name SEPARATOR '\n' )
FROM wp_woocommerce_order_items oi
WHERE order_id = p.ID
AND oi.order_item_type = 'line_item'
) AS line_items,
(
SELECT group_concat( CASE WHEN oim.meta_key = '_qty' AND oi.order_item_id = oim.order_item_id THEN oim.meta_value END SEPARATOR '\n' )
FROM wp_woocommerce_order_items oi
LEFT JOIN wp_woocommerce_order_itemmeta oim ON oi.order_item_id = oim.order_item_id
WHERE order_id = p.ID
AND oi.order_item_type = 'line_item'
) AS line_items_qtys,
(
SELECT group_concat(
format(
CASE WHEN oim.meta_key = '_line_subtotal' AND oi.order_item_id = oim.order_item_id THEN oim.meta_value END
, 2 )
SEPARATOR '\n' )
FROM wp_woocommerce_order_items oi
LEFT JOIN wp_woocommerce_order_itemmeta oim ON oi.order_item_id = oim.order_item_id
WHERE order_id = p.ID
AND oi.order_item_type = 'line_item'
) AS line_items_subtotals,
(
SELECT group_concat(
format(
CASE WHEN oim.meta_key = 'cost' AND oi.order_item_id = oim.order_item_id THEN oim.meta_value END
, 2 )
SEPARATOR '\n' )
FROM wp_woocommerce_order_items oi
LEFT JOIN wp_woocommerce_order_itemmeta oim ON oi.order_item_id = oim.order_item_id
WHERE order_id = p.ID
AND oi.order_item_type = 'shipping'
) AS shipping_cost,
-- Contact Info
max( CASE WHEN pm.meta_key = '_billing_email' AND p.ID = pm.post_id THEN pm.meta_value END ) AS billing_email,
max( CASE WHEN pm.meta_key = '_billing_phone' AND p.ID = pm.post_id THEN pm.meta_value END ) AS billing_phone,
-- Customer Data Example
-- max( CASE WHEN pm.meta_key = '_customer_user' AND p.ID = pm.post_id THEN pm.meta_value END ) AS user_id,
-- max( CASE WHEN um.meta_key = 'nickname' THEN um.meta_value END ) AS user_nickname,
-- Billing
max( CASE WHEN pm.meta_key = '_billing_first_name' AND p.ID = pm.post_id THEN pm.meta_value END ) AS billing_first_name,
max( CASE WHEN pm.meta_key = '_billing_last_name' AND p.ID = pm.post_id THEN pm.meta_value END ) AS billing_last_name,
max( CASE WHEN pm.meta_key = '_billing_address_1' AND p.ID = pm.post_id THEN pm.meta_value END ) AS billing_address_1,
max( CASE WHEN pm.meta_key = '_billing_address_2' AND p.ID = pm.post_id THEN pm.meta_value END ) AS billing_address_2,
max( CASE WHEN pm.meta_key = '_billing_city' AND p.ID = pm.post_id THEN pm.meta_value END ) AS billing_city,
max( CASE WHEN pm.meta_key = '_billing_state' AND p.ID = pm.post_id THEN pm.meta_value END ) AS billing_state,
max( CASE WHEN pm.meta_key = '_billing_postcode' AND p.ID = pm.post_id THEN pm.meta_value END ) AS billing_postcode,
-- Shipping
max( CASE WHEN pm.meta_key = '_shipping_first_name' AND p.ID = pm.post_id THEN pm.meta_value END ) AS shipping_first_name,
max( CASE WHEN pm.meta_key = '_shipping_last_name' AND p.ID = pm.post_id THEN pm.meta_value END ) AS shipping_last_name,
max( CASE WHEN pm.meta_key = '_shipping_address_1' AND p.ID = pm.post_id THEN pm.meta_value END ) AS shipping_address_1,
max( CASE WHEN pm.meta_key = '_shipping_address_2' AND p.ID = pm.post_id THEN pm.meta_value END ) AS shipping_address_2,
max( CASE WHEN pm.meta_key = '_shipping_city' AND p.ID = pm.post_id THEN pm.meta_value END ) AS shipping_city,
max( CASE WHEN pm.meta_key = '_shipping_state' AND p.ID = pm.post_id THEN pm.meta_value END ) AS shipping_state,
max( CASE WHEN pm.meta_key = '_shipping_postcode' AND p.ID = pm.post_id THEN pm.meta_value END ) AS shipping_postcode
FROM wp_posts p
LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id
LEFT JOIN wp_woocommerce_order_items oi ON p.ID = oi.order_id
-- Customer Data Example
-- LEFT JOIN wp_users u ON u.ID = pm.meta_value AND pm.meta_key = '_customer_user'
-- LEFT JOIN wp_usermeta um ON um.user_id = u.ID
WHERE post_type = 'shop_order'
GROUP BY p.ID;