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.