web-dev-qa-db-fra.com

Rechercher les utilisateurs sur meta_value & meta_key

Comment utiliser plusieurs meta_key et meta_value pour rechercher des utilisateurs?

Par exemple, je souhaite rechercher et trouver le nom d'utilisateur correspondant à "David" et son emplacement à "Londres".

J'utilise cette requête, mais rien en résultat!

$query = "SELECT user_id FROM $wpdb->usermeta WHERE (meta_value LIKE '%%david%%') AND (meta_key = 'first_name') AND (meta_value LIKE '%%london%%') AND (meta_key = 'location')";

$rows = $wpdb->get_results($query);

Merci

1
sharktech

Votre requête est fausse, c'est comme ça que nous le notons car il n'y a pas de ligne dans la base de données contenant plus d'une méta_key. Ce que vous pouvez faire à la place est de créer une sous-requête pour obtenir tous les identifiants d'utilisateurs résidant à Londres en tant que sous-requête et de les utiliser pour filtrer les identifiants d'utilisateurs nommés David.

$query = "SELECT user_id FROM $wpdb->usermeta
    WHERE (meta_value LIKE '%%david%%') 
    AND (meta_key = 'first_name') 
    AND user_id IN (SELECT user_id FROM $wpdb->usermeta WHERE (meta_value LIKE '%%london%%') AND (meta_key = 'location'))";

$rows = $wpdb->get_results($query)
1
Bainternet