Sélectionner les utilisateurs n'ayant pas commandé depuis 1 an

finipe_
Invité n'ayant pas de compte PHPfrance

30 oct. 2021, 16:27

Bonjour à tous, (pas moyen de remettre la main sur mes identifiants de connexion :roll:)

Je cherche actuellement à faire des stats sur une base assez importante de clients de de commandes.
Parmi ces requêtes, j'ai "N'a pas commandé".

Pour ce faire, j'envoie :

Code : Tout sélectionner

SELECT users . id FROM users LEFT JOIN commandes ON users . id = commandes . id_user WHERE commandes . id_user IS NULL GROUP BY users . id
Pas de souci, ça fonctionne.

Maintenant, si je veux obtenir "N'a pas commandé depuis 1 an", je ne sais pas trop comment faire, car une simple condition de date sur la jointure n'est pas suffisante : "n'a pas commandé depuis 1 an" suppose que, avant cette année passée, le client avait déjà commandé au moins une fois...

Auriez-vous des idées à ce propos ?

Merci pour votre aide.

Mammouth du PHP | 2703 Messages

30 oct. 2021, 16:34

count() pour compter le nombre de commande et tester que c'est > 0.
et le test sur la date de dernière commande.

Eléphant du PHP | 337 Messages

30 oct. 2021, 17:26

Merci pour ta réponse rapide !

Je ne vois cependant pas comment je peux tester la date de dernière commande pour tous les users de la base de données :?

J'ai fait une requête pour tester les users qui ont commandé au moins 2× par exemple, en utilisant un INNER JOIN et HAVING COUNT(*)>=2 à la fin, mais je ne vois pas comment transposer ça à la question "n'a pas commande depuis ..."