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

Requêtes PostgreSQL Discussion :

Afficher les valeurs null (0) dans une requête stats avec GROUP BY [9.4]


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2011
    Messages : 10
    Points : 13
    Points
    13
    Par défaut Afficher les valeurs null (0) dans une requête stats avec GROUP BY
    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

  2. #2
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Il faut déplacer le filtre (where) vers la jointure (join)...
    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 and  s.site = 140
    GROUP BY m.marque
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2011
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    Magnifique merci je ne savais même pas que l'on pouvait faire ça.
    Merci encore.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/12/2010, 12h33
  2. Réponses: 4
    Dernier message: 04/08/2009, 16h52
  3. Réponses: 2
    Dernier message: 15/03/2009, 22h52
  4. Réponses: 18
    Dernier message: 09/12/2008, 10h40
  5. Réponses: 2
    Dernier message: 09/07/2008, 11h34

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