2016-11-10 73 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