2016-11-10 2 views
0

QUERY 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); 

сочетаться с QUERY ...

$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

Nevermind Я получил его работу с echo $ res ['выдающийся']; Большое спасибо за Вашу помощь! –

+0

Извините, просто увидел это. Рад, что он решил вашу проблему (и решил, что вы решили проблему); спасибо за принятие – Hobo

Смежные вопросы