J'ai un site WordPress et je fais une requête pour obtenir tous les utilisateurs possédant une capacité / une plage spécifique. Dans la liste, je reçois un "méta_value" qui a un horodatage, puis je vérifie s'il est inférieur à celui de l'heure actuelle (expiré) Il est possible d'utiliser une jointure ou quelque chose pour optimiser La requête? P> Merci d'avance p> p>
3 Réponses :
Il est préférable de laisser la base de données gérer le filtrage.
Essayez quelque chose comme ceci: que vous obtenez toutes les lignes "expirées". P> p>
Bonjour! Dans ce cas, l'horodatage n'est pas dans une colonne. Merci pour votre réponse
usermeta code> Table dans WordPress STRY>
SELECT * FROM `wp_usermeta` um1 join `wp_usermeta` um2
ON um1.user_id = um2.user_id
AND um1.meta_key = 'wp_capabilities'
AND um1.meta_value LIKE '%premium%'
AND `um2`.`meta_key` = '_expire_user_date
Merci, ma requête finale est la suivante: Sélectionnez UM2.Meta_Value de WP_USERMETA UM1 Join WP_USERMETA UM2 sur UM1.User_id = um2.User_id et um1.meta_key = 'wp_cepabilities' et um1.meta_value comme '% Premium%' et um2.meta_key = '_Expire_user_date 'Alors ça m'aide à vérifier l'heure de chaque rangée
mais le plus facile est rejoindre gauche code> ou
subquiery code> fonctionnera. Je pense que
de rejoindre code> sera optimal un
sous-requête code> qui est un peu plus lent que gauche rejoindre P>
Bonjour! La requête me renvoie "la colonne" user_id "dans la liste des champs est ambiguë", BTW merci pour la réponse :-)
@Jasonderek Exactement merci, j'ai mis à jour ma réponse. Merci pour la correction. La jointe gauche est la plus rapide.
Vous recherchez les utilisateurs qui sont expirés et possèdent des capacités particulières?
Salut. Oui, qui sont expirés et ont la capacité particulière "Premium".
Vous devriez utiliser des déclarations préparées, sinon votre code est vulnérable à l'injection SQL.