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

Langage SQL Discussion :

count null zero


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Par défaut count null zero
    Bonjour à tous,
    Je sais que ce sujet a déjà été traité dans d'autres post mais les solutions apportées ne m'aide pas beaucoup.

    Je vous explique mon cas (l'exemple est fictif):

    suivi
    id_eleve___ : 1234 1234 1234 5678 5678
    id_ecole___ : 1111 2222 3333 1111 2222
    provenance : BAC BAC DESS BEPC CAP

    inscription
    id_eleve______ : 1234 1234 5678
    id_ecole______ : 1111 2222 1111 ....
    date_inscription : 01/01/2006 01/01/2006 01/01/2006

    traitement
    id_eleve______ : 1234 5678
    date_inscription : 01/01/2006 01/01/2006

    La table de traitement m'indique tous les élèves sur lequel porte mon traitement
    La table d'inscription permet de récupérer les id_ecole me permettant de récupérer les enregistrements correspondant dans la table suivi

    Mon but est de comptabiliser le nombre d'inscription pour une certaine provenance pour les élèves et la date d'inscription de la table traitement
    j'ai donc créer une requête ensembliste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select distinct(T.id_eleve), nvl(count(*),0) as nb
    from inscription I, suivi S, traitement T 
    where I.id_eleve=S.id_eleve
          and I.id_ecole=S.id_ecole
          and  I.id_eleve=T.id_eleve(+)
          and I.date_inscription=T.date_inscription
          and S.provenance='BAC'
          group by T.id_eleve
    Cette requête me renvoi le résultat :
    id_eleve | nb
    1234 | 2


    alors que je voudrais :
    id_eleve | nb
    1234 | 2
    5678 | 0


    Avez vous une idée pour récupérer le nombre d'inscription même s'il les valeurs sont nulles?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Merci de préciser votre SGBD (Oracle ?) et sa version.
    D'autre part, pouvez-vous essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT DISTINCT(T.id_eleve), nvl(count(*),0) AS nb
    FROM inscription I, suivi S, traitement T 
    WHERE I.id_eleve=S.id_eleve
          AND I.id_ecole=S.id_ecole
          AND  I.id_eleve=T.id_eleve(+)
          AND I.date_inscription=T.date_inscription(+) -- changement ici !
          AND S.provenance='BAC'
          GROUP BY T.id_eleve

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Par défaut
    j'utilise oracle 10.2

    et pour la modification : ça ne change rien toujours qu'un résultat

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Oui effectivement j'avais lu trop vite.
    En regardant de plus près, avec votre modélisation actuelle votre demande me semble difficilement réalisable.
    Si possible, modifiez la modélisation de vos données.

  5. #5
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    Bonjour,
    Essayez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT T.id_eleve, count(*) nb
    FROM traitement T 
         left join (select i.id_eleve, i.id_ecole, date_inscription from inscription I inner join suivi S on i.id_eleve = s.id_eleve and i.id_ecole = s.id_ecole where S.provenance='BAC') i_s
           on T.id_eleve = i_s.id_eleve and T.date_inscription = i_s.inscription
    GROUP BY T.id_eleve
    Remarque :
    Etant donné que "traitement" défini votre périmètre, les jointures externes sont à l'envers dans votre requête

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Par défaut
    En fait la base que j'utilise n'est pas en 10.2 mais
    Oracle8 Enterprise Edition Release 8.0.6.3.0 (la migration en 10 n'a pas encore été réalisée, elle le sera d'ici peu)
    Et j'utilise le client : PL/SQL Release 8.0.6.3.0

    du coup mon compilateur n'accepte pas la syntaxe
    FROM traitement T
    LEFT JOIN
    qu'elle est la syntaxe équivalente?

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

Discussions similaires

  1. [SQL] Affichage des valeurs nulles dans un Count
    Par at_first dans le forum Access
    Réponses: 4
    Dernier message: 06/03/2007, 11h07
  2. mettre des Zero a tous les champ null d'un coup
    Par LesLemmings dans le forum Access
    Réponses: 3
    Dernier message: 14/06/2006, 09h34
  3. Comment faire un count de colonnes null
    Par claralavraie dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/01/2006, 14h13
  4. COUNT(*) = NULL!!!!
    Par jnstaub dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 20/01/2006, 10h14
  5. Afficher le résultat d'un COUNT même null
    Par Invité dans le forum Langage SQL
    Réponses: 10
    Dernier message: 18/11/2005, 18h07

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