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 :

Quelques lignes me manquent dans le résultat de ma requête...


Sujet :

Requêtes PostgreSQL

  1. #1
    Invité
    Invité(e)
    Par défaut Quelques lignes me manquent dans le résultat de ma requête...
    Bonjour,

    Voici ma Base de donnés:
    Pièce jointe 85437

    Voici la Question:
    - Donner le nombre de bonus offensif par équipe. ( sachant que bonus offensif c'est le nombre de matchs où nat_essai >= 4 )

    Voici ce que j'ai fait j'ai pu récupérer le nombre de bonus offensifs pour chaque équipe mais les équipes qui ont le bonus offensif 0 ne s'affichent pas si vous pouvez me guider.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    SELECT 
      nation.nat_nom,
      COUNT(joue.nat_essai) as PB
    FROM 
      public.joue
      INNER JOIN public.match ON  joue.mat_id = match.mat_id
      INNER JOIN public.nation ON  joue.nat_id = nation.nat_id
    WHERE
      joue.nat_essai >= 4
    GROUP BY
      nation.nat_nom
    ORDER BY
      nation.nat_nom
      ;
    NB: J'ai pensé à PL/PgSQL pour faire les conditions pour afficher aussi ceux qui ont 0 comme point offensif mais je ne sais pas si ça vaut la peine vu que je n'ai jamais utilisé mais si il faut le faire en PL/PgSQL je vais me pencher dessus

    Merci.
    Dernière modification par al1_24 ; 25/11/2011 à 11h04. Motif: Grammaire, orthographe

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Tu filtres (le WHERE) sur les équipes ayant marquées plus de 4 essais, donc impossible d'afficher les autres.
    Essaie en conditionnant le COUNT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 
      nation.nat_nom,
      sum(case when joue.nat_essai >= 4 then 1 else 0 end) AS PB
    FROM 
      public.joue
      INNER JOIN public.match ON  joue.mat_id = match.mat_id
      INNER JOIN public.nation ON  joue.nat_id = nation.nat_id
    GROUP BY
      nation.nat_nom
    ORDER BY
      nation.nat_nom
    Je l'ai transormé en SUM parce que je trouve SUM plus intuitif dans ce cas mais COUNT donnera le même résultat.
    En gros ça dit :
    SI joue.nat_essai >= 4
    ALORS pb ++
    FIN SI

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour votre réponse ça va me permettre de répondre au prochaine Question Mais je veux juste savoir si j'ai bien compris, si je veux faire :

    if (attribut 1 < attribut 2) then 1 <=> case when attribut1 < attribut 2 then 1 else 0 end

    J’espère que je me suis pas trompé

    Merci

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    C'est ça, le ELSE 0 est facultatif.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Je l'ai transormé en SUM parce que je trouve SUM plus intuitif dans ce cas mais COUNT donnera le même résultat.
    Non le COUNT avec le CASE donnerait un résultat faux puisqu'il compterait les 0 comme les 1 sans faire aucune différence entre les deux.

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Ah exact je mets jamais le ELSE normalement donc avec ELSE NULL (ce qui revient à ne pas mettre le ELSE) ça donnera le même résultat.
    Merci pour la correction

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/01/2012, 15h13
  2. incomprehension de quelques lignes d'assembleur dans du code C
    Par ultimaroms dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 06/10/2011, 20h31
  3. générer des n° de lignes dans le résultat d'une requête
    Par karimspace dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 13/09/2007, 21h33
  4. [SQL] Recherche dans le résultat d'une requête
    Par Ekik dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/03/2007, 11h32
  5. Lignes en double dans le résultat d'une jointure
    Par ledevelopeur dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/06/2004, 19h10

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