J'ai une requête qui vise à renvoyer les détails de l'utilisateur à partir de tables Wordpress. Ce serait bien si je sélectionnais simplement les noms de colonne que je voulais, mais dans Wordpress, il y a une table usermeta qui a 2 colonnes - 1 appelée métakey et 1 appelée méta valeur.
Je souhaite obtenir certaines informations utilisateur à partir de clés méta, telles que prénom et nom, mais elles se trouvent toutes dans la même colonne - metavalue.
Voici ce que j'ai
$allquery="SELECT $comma_separated, wp_usermeta.meta_value, wp_usermeta.meta_key,
//comma_seperated are a list of values to search for seperate by ",". this is name, email
GROUP_CONCAT(
wp_usermeta.meta_value
ORDER BY wp_usermeta.meta_key
) AS name
FROM wp_users
LEFT JOIN wp_usermeta
ON wp_users.ID = wp_usermeta.user_id
WHERE (wp_usermeta.meta_key = 'first_name'
OR wp_usermeta.meta_key = 'last_name')
AND wp_users.user_login = '$spec_user'
GROUP BY wp_users.ID";
$names = array();
$allresult=mysql_query($allquery) or die(mysql_error());
while($rows=mysql_fetch_array($allresult)){
$names[] = $rows['name']; //name is from the group_concat in query
$emails[] = $rows['user_email'];
}
Le problème est que cela ne renvoie qu'une seule ligne. Je pense que cela pourrait avoir quelque chose à voir avec la ligne:
AND wp_users.user_login = '$ spéc_user'
Où $ spéc_user est une valeur entrée par l'utilisateur.
Ce que je veux idéalement, ce sont toutes les lignes renvoyées où la colonne user_login est égale à celle entrée par l'utilisateur. Pas seulement de cette table, mais de la table usermeta.
Que diriez-vous d'une requête pivot?
Cela renverrait les lignes avec prénom, nom, nom d'utilisateur. Vous pouvez ensuite ajouter la condition de votre choix à l'aide d'une clause WHERE.
SELECT
MAX(CASE WHEN wp_usermeta.meta_key = 'first_name' then wp_usermeta.meta_value ELSE NULL END) as first_name,
MAX(CASE WHEN wp_usermeta.meta_key = 'last_name' then wp_usermeta.meta_value ELSE NULL END) as last_name,
wp_users.user_login
FROM wp_users
LEFT JOIN wp_usermeta
ON wp_users.ID = wp_usermeta.user_id
GROUP BY wp_users.user_login