Jump to content

Recommended Posts

Bonjour, j'ai un problème avec ma requête sql, je m'arrache les cheveux, pouvez-vous m'aider :)

Je souhaite afficher dans le "Gestionnaire SQL" TOUS mes clients avec le nombre de point fidélité restant qui correspond à "id_loyalty_state ==2".
Or avec ma requête j'affiche que les clients avec des points correspondant à "id_loyalty_state ==2" mais pas tous les clients.

J'aimerai faire un "WHERE" uniquement sur la jointure loyalty et ne pas l'appliquer à la requête général pour qu'il m'affiche tous les clients.
Il me faut un truc du genre:   compter les points "sum(l.point)" qui correspondent à "id_loyalty_state =2" mais afficher tous les clients même ceux qui n'ont pas de point.

J'espère que j'ai été claire. Merci

SELECT DISTINCT 
c.id_customer,
c.id_gender, 
c.firstname,
c.lastname,
c.email, 
IF (YEAR(`birthday`) = 0, "-", (YEAR(CURRENT_DATE)-YEAR(`birthday`)) - (RIGHT(CURRENT_DATE, 5) < RIGHT(birthday, 5))) AS `age`,
c.id_default_group AS GROUPE,
IFNULL(SUM(l.points), 0) AS points,
c.date_add
FROM customer c 
LEFT JOIN loyalty l ON (c.id_customer = l.id_customer) 
where l.id_loyalty_state = 2 
GROUP BY c.id_customer 
ORDER BY c.id_customer ASC 

 

Share this post


Link to post
Share on other sites

enlève la clause where

enlève le distinct d'ailleurs

 

remplace ifnull(sum(l.points,0) as points par

sum(if(l.id_loyalty_state = 2, coalesce(l.points,0), 0)) as points

  • Thanks 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More