繁体   English   中英

将多个MySQL查询转换为单个查询

[英]convert multiple MySQL queries into a single query

查询1 ...

$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');

这样就可以删除“ $ out”变量,而我可以使用“ $ result” ...

如果我正确理解了您的问题,则需要从第一个查询到第二个查询进行联接,并在结果集中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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM