0

Ok it has been a while since I last wrote an sql query. I have the following query

$user_search->query_where = 
    str_replace('WHERE 1=1', 
        "WHERE 1=1 AND {$wpdb->users}.ID IN (
         SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta 
            WHERE {$wpdb->usermeta}.meta_key = 'select_team_leader' 
            AND {$wpdb->usermeta}.meta_value = {$user_leader})", 
            $user_search->query_where
    );

I want to add an OR statement like

OR {$wpdp->usermeta}.user_id = {$user_leader}

Do I need to use an inner join for this ? thanks

2
  • do you want to add it in the whereclause of the subselect or the other? please be more specific Commented Aug 8, 2014 at 10:45
  • @chresse , along with the inner clause. I want to select users which either fall under a team leader (where select_team_leader == user_leader) Or is the team leader themselves ( where user_id == user_leader ) Commented Aug 8, 2014 at 10:49

1 Answer 1

1

No you don't need to use an extra join you just have to organize your query to look for either user id or meta_value

$user_search->query_where = 
    str_replace('WHERE 1=1', 
        "WHERE 1=1 AND {$wpdb->users}.ID IN (
         SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta 
            WHERE {$wpdb->usermeta}.meta_key = 'select_team_leader' 
            AND 
          ( 
           {$wpdb->usermeta}.meta_value = {$user_leader}
            OR {$wpdp->usermeta}.user_id = {$user_leader}
          )
       )", 
            $user_search->query_where
    );

So above query will look for meta_value is equal to provided value ie. {$user_leader} or user_id is equal to {$user_leader} but whatever matches meta_key should be select_team_leader

Edit from comments

$user_search->query_where = 
    str_replace('WHERE 1=1', 
        "WHERE 1=1 AND {$wpdb->users}.ID IN (
         SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta 
            WHERE (
             {$wpdb->usermeta}.meta_key = 'select_team_leader' 
            AND {$wpdb->usermeta}.meta_value = {$user_leader} 
              )
            OR {$wpdp->usermeta}.user_id = {$user_leader}
       )", 
            $user_search->query_where
    );
Sign up to request clarification or add additional context in comments.

1 Comment

thanks for the reply. however this does not work as I need. I would need to check either by meta_key and meta value, OR just by user_id

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.