Bonjour à tous,

Je souhaite optimiser mon code php en créant des requêtes postgresql plus efficace que mes foreach de plusieurs requêtes pour faire mes stats.

J'ai deux tables que j'ai pris pour illustrer mon problème :

table marques :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
idmarque | marque
1 | Peugeot
2 | Renault
3 | Citroën
table stock :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
idstock | immatriculation | idmarque | site
1 | 123 AB 456 | 1 | 140
2 | AF-123-AB | 2 | 140
Quand j'exécute la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT m.marque, COUNT(s.idstock) AS nbre FROM marques m
LEFT JOIN stock s ON m.idmarque = s.idmarque
GROUP BY m.marque
J'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
marque | nbre
Renault | 1
Citroën | 0
Peugeot | 1
Quand j'exécute la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT m.marque, COUNT(s.idstock) AS nbre FROM marques m
LEFT JOIN stock s ON m.idmarque = s.idmarque
WHERE s.site = 140
GROUP BY m.marque
J'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
marque | nbre
Renault | 1
Peugeot | 1
Ce résultat est tout à fait logique mais j'aimerais une requête qui me donnerai 0 pour les marques non présente dans le site 140.

J'espère que je me fais bien comprendre.

Merci d'avance pour votre aide,

Emmanuel