IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

SELECT des Infos clients ayants commandé un certain produit pour la dernière fois il y a plus d'1 an


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Alternance
    Inscrit en
    Novembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Alternance

    Informations forums :
    Inscription : Novembre 2022
    Messages : 2
    Par défaut SELECT des Infos clients ayants commandé un certain produit pour la dernière fois il y a plus d'1 an
    Bonjour,

    Je travaille sur un site tournant sous prestashop donc avec une base prestashop basique.
    Je cherche à créer une requête qui permette de récupérer les informations des clients qui ont commandé au moins 1 produit d'une gamme de produit (il ne peut pas commander la gamme mais les produits la composant, il y a donc plusieurs produit différents dans la gamme) il y a plus d'un an mais qui ne l'ont pas recommandé depuis.
    Le principal problème c'est que je dois réaliser cette requête dans la section base de données de mon back office en utilisant uniquement des requêtes select, pas de possibilité de création de méthodes ou de fonctions.

    J'ai essayé beaucoup de manières différentes en m'inspirant de différentes sections de ce forum mais aucune ne marche parfaitement...

    J'utilise principalement 3 tables : ps_customer (contient toutes les infos client que je dois ressortir (firstname, lastname, email))
    ps_orders (contient les commandes et leur date de création (date_add))
    ps_order_detail (contient les informations de la commandes dont le produit acheté (id_product, product_name).

    Pour le moment j'ai cette requête, peut-être pas très belle mais c'est celle qui me donne le meilleur résultat pour le moment.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT c.id_customer, c.firstname, c.lastname, c.email, MAX(o.date_add)
    FROM ps_customer c
    LEFT JOIN ps_orders o ON c.id_customer = o.id_customer
    LEFT JOIN ps_order_detail od ON o.id_order = od.id_order
    WHERE (od.product_name LIKE '%Edith%'
    OR od.product_name LIKE '%Édith%'
    OR od.product_name LIKE '%Têtes interchangeables%'
    OR od.product_name LIKE '%Tête interchangeable%')
    AND o.date_add > DATE_SUB(NOW(), INTERVAL 1 YEAR)
    AND o.date_add IS NOT NULL
    GROUP BY c.id_customer
    ORDER BY o.date_add DESC
    Je suis sur une base MariaDB pour info.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 622
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Le SQL est un langage naturel, il s'écrit comme en français :

    sélectionner les clients qui ont commandé des produits d'une gamme, mais pour lesquels il n'existe pas de commande de cette gamme datant de moins d'un an.

    Il suffit donc d'utiliser NOT EXISTS et le tour est joué .

    Notez que votre restriction utilise l'opérateur LIKE avec des chaines préfixées et suffixées par % ce faisant, aucun index ne sera éligible. Gare aux performances si la base de données est un tant soit peu chargée

  3. #3
    Candidat au Club
    Homme Profil pro
    Alternance
    Inscrit en
    Novembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Alternance

    Informations forums :
    Inscription : Novembre 2022
    Messages : 2
    Par défaut
    Merci pour votre rapidité de réponse, je vais tenter de m'en sortir avec le NOT EXISTS

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. msiexec ajouter des infos dans la commande?
    Par stf38 dans le forum Windows XP
    Réponses: 2
    Dernier message: 18/04/2013, 11h48
  2. Des infos sur la commande STM.
    Par Hildan dans le forum Unix
    Réponses: 0
    Dernier message: 14/09/2011, 19h09
  3. Selection des infos != entre 2 bdd
    Par agencep dans le forum HyperFileSQL
    Réponses: 0
    Dernier message: 10/11/2009, 18h31
  4. [Tableaux] Récupérer des Infos CLIENT
    Par maroweb dans le forum Langage
    Réponses: 11
    Dernier message: 02/02/2006, 22h40
  5. [servlet] Récupérer des infos sur le client
    Par kenito dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 07/09/2005, 18h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo