好吧,我有以下幾點:得到兩列在MySQL和繁殖的結果
user id meta
2 _qty 3
2 Weight 20
1 _qty 1
1 weight 30
我需要獲取用戶ID欄然後由權重賦予我的用戶ID 2 = 60和用戶ID乘以數量= 1 30 ...... 我試過以下,但無濟於事:
$myrows = $wpdb->get_results("SELECT meta_value, SUM(_qty*weight) AS product_id FROM {$wpdb->prefix}woocommerce_order_itemmeta GROUP BY ($query_select_order_items)");
其中($query_select_order_items)
是USER_ID。 我該如何解決這個問題?
實際PHP我目前正在運行:
/**
* Returns all the orders made by the user
*
* @param int $user_id
* @param string $status (completed|processing|canceled|on-hold etc)
* @return array of order ids
*/
function fused_get_all_user_orders($user_id,$status='completed'){
if(!$user_id)
return false;
$orders=array();//order ids
$args = array(
'numberposts' => -1,
'meta_key' => '_customer_user',
'meta_value' => $user_id,
'post_type' => 'shop_order',
'post_status' => 'publish',
/* 'tax_query'=>array(
array(
'taxonomy' =>'shop_order_status',
'field' => 'slug',
'terms' =>$status
)
) */
);
$posts=get_posts($args);
//get the post ids as order ids
$orders=wp_list_pluck($posts, 'ID');
return $orders;
}
function fused_get_all_products_ordered_by_user($user_id=false){
$orders=fused_get_all_user_orders($user_id);
if(empty($orders))
return false;
$order_list='('.join(',', $orders).')';//let us make a list for query
//so we have all the orders made by this user which was successfull
//we need to find the products in these order and make sure they are downloadable
// find all products in these order
global $wpdb;
$query_select_order_items="SELECT order_item_id as id FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id IN {$order_list}";
$query_select_product_ids="SELECT meta_value as product_id FROM {$wpdb->prefix}woocommerce_order_itemmeta WHERE meta_key=%s AND order_item_id IN ($query_select_order_items)";
$products=$wpdb->get_col($wpdb->prepare($query_select_product_ids,'weight'));
$qty = $wpdb->get_col($wpdb->prepare($query_select_product_ids,'_qty'));
return $products;
}
凡目前到底是$產品返回重的列表,或者如果我將其設置爲_qty將返回訂購數量的列表.. 。 sqlfiddle
從草莓更新回答:
"SELECT order_item_id, weight * quantity total FROM (
SELECT order_item_id,
MAX(CASE WHEN meta_key = '_qty' THEN meta_value ELSE 0 END) quantity ,
MAX(CASE WHEN meta_key = 'weight' THEN meta_value ELSE 0 END) weight
FROM wp_woocommerce_order_itemmeta GROUP BY order_item_id)
WHERE order_item_id IN ($query_select_order_items) x;"
嘗試此查詢' 「選擇meta_value,_qty *體重從table_name的GROUP BY」。$ query_select_order_items' – krishna
這不工作... – vimes1984
你確定你每個用戶只有一個'_qty'和'weight'嗎? –