J'essaie de créer une seule requête pour obtenir des informations de la table principale (table utilisateur WordPress), et la table méta de l'utilisateur. Si vous n'êtes pas familier avec l'architecture WP DB: wp_users contient des informations utilisateur de base et leurs ID, wp_usermeta contient l'ID, meta_key et meta_value.Compex MySQL Left Joindre en utilisant plusieurs entrées à partir de tables méta
Disons que je veux obtenir tous les utilisateurs qui ont certaines méta_keys et meta_values. Ceci est la requête que j'ai actuellement (généré par PHP basé sur meta_keys disponibles):
SELECT ID,
user_email,
user_login,
first_name.meta_value as first_name,
last_name.meta_value as last_name,
phone_number.meta_value as phone_number,
wp_capabilities.meta_value as wp_capabilities
FROM wp_users,
(select * from wp_usermeta where meta_key = 'first_name') as first_name,
(select * from wp_usermeta where meta_key = 'last_name') as last_name,
(select * from wp_usermeta where meta_key = 'phone_number') as phone_number,
(select * from wp_usermeta where meta_key = 'wp_capabilities') as wp_capabilities
WHERE
ID = first_name.user_id AND
ID = last_name.user_id AND
ID = phone_number.user_id AND
ID = wp_capabilities.user_id AND
wp_wpi_capabilities.meta_value LIKE '%administrator%'
ORDER BY first_name
Cela fait un bon travail, si un utilisateur manque un meta_key, « last_name », par exemple, cette ligne d'utilisateur ne ne pas être renvoyé du tout. Donc, tout ce dont j'ai besoin est une façon de retourner une valeur Null pour les clés méta manquantes.
Maintenant j'ai une fonction très hackish qui traverse et crée des meta_keys et des meta_values vides pour tous les utilisateurs qui n'ont pas de méta_key donnée, de cette façon ils sont retournés. C'est une manière terrible de le faire cependant quand vous avez plus d'un millier d'utilisateurs, et vous devez ajouter un nouveau type de meta_key. Faites-moi savoir si quelqu'un l'a fait, ou si j'ai besoin de mieux expliquer.
Merci.
Pourquoi ne pas en faire le premier 3 une jointure GAUCHE appropriée? en ce moment vous faites des jointures droites .... – Wrikken