2

我试图从 Wordpress/WooCommerce 数据库中检索的是按美国各州分组的订单列表,其中包含每个州的订单总额和订单税。

所以我得到的最接近的是我写的这个查询:

SELECT meta_key, meta_value 
FROM wp_posts 
LEFT OUTER JOIN wp_postmeta ON wp_posts.ID=wp_postmeta.post_id 
WHERE post_type = "shop_order" 
AND (
meta_key = "_billing_state" 
OR meta_key = "_order_tax" 
OR meta_key = "_order_total"
) 
ORDER BY ID ASC

它返回:

meta_key         meta_value
_billing_state   NJ
_order_tax       0.21
_order_total     3.21
_billing_state   NJ
_order_tax       1.75
_order_total     26.70
_billing_state   IA
_order_tax       6.79
_order_total     103.54
_billing_state   PA
_order_tax       1.82
_order_total     27.72

...等等。

我真正需要返回的是:

state  order_tax_sum  order_total_sum
NJ     1.96           29.91
IA     6.79           103.54
PA     1.82           27.72

非常感谢所有帮助!

4

1 回答 1

3

尝试这样的事情:

select
    state,
    sum(order_tax_sum),
    sum(order_total_sum)
from (
    select
        (select meta_value from wp_postmeta pm1 where p.ID = pm1.post_id and meta_key = "_billing_state") as state,
        (select meta_value from wp_postmeta pm2 where p.ID = pm2.post_id and meta_key   = "_order_tax") as order_tax_sum,
        (select meta_value from wp_postmeta pm3 where p.ID = pm3.post_id and meta_key   = "_order_total") as order_total_sum
    from
        wp_posts AS p
    WHERE post_type = "shop_order"
) A
group by A.state

警告 - 完全未经测试,但基本思想(加入 select 语句本身)应该是合理的

于 2013-11-07T19:16:34.100 回答