[英]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.