2016-11-10 71 views
0

查詢1 ...轉換多個MySQL查詢到一個查詢

$result = $wpdb->get_results("SELECT wp_users.ID,wp_users.user_login,wp_users.user_registered,wp_users.user_email,t.total,t.acc_nums FROM wp_users LEFT JOIN wp_usermeta ON (wp_users.ID = wp_usermeta.user_id) left join (SELECT count(*) as total,user_id,Group_concat(account_number) as acc_nums FROM `user_per_bank` group by user_id) as t on t.user_id=wp_users.ID WHERE 1=1 AND ( 
    ( 
(wp_usermeta.meta_key = 'wp_capabilities' AND wp_usermeta.meta_value LIKE '%\"editor\"%') 
) 
) ORDER BY user_registered DESC", ARRAY_A); 

要結合具有查詢...

$out = $wpdb->get_results('SELECT `user_id`, sum(`amount`) as outstanding FROM `assist_trans` LEFT JOIN `wp_users` ON wp_users.id = assist_trans.user_id WHERE `status` IN (0,2,4) GROUP BY assist_trans.user_id ORDER DESC'); 

使「$出」變量可以被丟棄和我可以使用「$ result」來代替...

回答

1

如果我正確地理解了您的問題,則需要從第一個查詢到第二個查詢進行連接,並在結果集中包含outstanding列。像這樣的東西應該工作。它沒有經過測試,但如果我犯了一個錯誤,它應該指向正確的方向。

唯一的變化(格式除外)是新連接和結果集中的附加列。

$result = $wpdb->get_results("SELECT wp_users.ID, 
            wp_users.user_login, 
            wp_users.user_registered, 
            wp_users.user_email, 
            t.total, 
            t.acc_nums, 
            o.outstanding 
           FROM wp_users 
            LEFT JOIN wp_usermeta ON (wp_users.ID = wp_usermeta.user_id) 
            LEFT JOIN (
             SELECT count(*) as total, 
               user_id, 
               Group_concat(account_number) as acc_nums 
              FROM `user_per_bank` 
             GROUP BY user_id) as t on t.user_id = wp_users.ID 
            LEFT JOIN (
             SELECT `user_id`, sum(`amount`) as outstanding 
              FROM `assist_trans` 
               LEFT JOIN `wp_users` ON wp_users.id = assist_trans.user_id 
              WHERE `status` IN (0,2,4) 
             GROUP BY assist_trans.user_id) as o ON (wp_users.ID = o.user_id) 
           WHERE 1=1 
           AND ( 
             ( 
             (wp_usermeta.meta_key = 'wp_capabilities' AND wp_usermeta.meta_value LIKE '%\"editor\"%') 
             ) 
            ) 
          ORDER BY user_registered DESC", 
      ARRAY_A); 
+0

這是完美的,它像我想要的,但你能幫我回顯添加的列嗎?這用於「foreach($ result as $ res){」循環,所以我現在只需要添加最後一列! –

+0

沒關係我用echo $ res ['outstanding'];非常感謝您的幫助! –

+0

對不起,剛纔看到了。很高興它解決了你的問題(並解決了你的後續問題);感謝接受 – Hobo