LogixMaster
LogixMaster

Reputation: 586

Wordpress SQL - Multiple WHERE clauses

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

Upvotes: 0

Views: 1494

Answers (1)

M Khalid Junaid
M Khalid Junaid

Reputation: 64476

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

Upvotes: 1

Related Questions