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

Informix Discussion :

[Informix] nombre d'étudiants qui ont passé au moins un test dans une période


Sujet :

Informix

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut [Informix] nombre d'étudiants qui ont passé au moins un test dans une période
    Bonjour

    voici ma table T_Note:
    | Nom | Prenom | DateNote| Note |

    je veux extraire le nombre des étudiants qui ont passé au moins un test dans la période "01/01/2007" "31/12/2007".
    La solution suivante me retourne un nombre supérieur au nombre des étudiants.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
              Select count(*)  
              from T_Note 
              where DateNote between "01/01/2007"  and "31/12/2007"
    Merci pour l'aide

  2. #2
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 49
    Points : 37
    Points
    37
    Par défaut
    C'est normal si tu as des étudiants qui ont plusieurs notes, il va te les compter deux fois...
    Essayes ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT count(distinct Nom)  
    FROM T_Note 
    WHERE DateNote BETWEEN "01/01/2007"  AND "31/12/2007"

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Merci slake13

    est ce que je peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT count(DISTINCT Nom,Prenom)  
    FROM T_Note 
    WHERE DateNote BETWEEN "01/01/2007"  AND "31/12/2007"

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 49
    Points : 37
    Points
    37
    Par défaut
    Non ça ne marchera pas, mais voici la requête qui affiche la liste des étudiants qui n'ont pas eu de note dans la période donnée (avec ID_Etudiant étant la clef primaire de ta table) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Nom, Prenom  
    FROM T_Note 
    WHERE ID_Etudiant NOT IN (SELECT ID_Etudiant 
                                          FROM T_Note
                                          WHERE DateNote BETWEEN "01/01/2007"  AND "31/12/2007")

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Merci slake13

    Je te rappelle que je cherche le nombre des étudiants
    en plus la table T_Note a la structure suivante :

    | Nom | Prenom | DateNote | Note |

    Merci pour l'aide

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    La solution t'a été donnée plus haut. Si tu as des étudiants qui ont le même nom mais pas le même prénom, il faut les distinguer sur ces deux colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT count(DISTINCT Nom, Prenom)  
    FROM T_Note 
    WHERE DateNote BETWEEN "01/01/2007"  AND "31/12/2007"
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Salut CinePhil

    Justement c'est là le problème j'arrive pas à faire DISTINCT sur une valeur composée, J'ai un message 201: A syntax error has occurred
    Pour infos,je suis sur Informix.

  8. #8
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    La solution t'a été donnée plus haut.
    c'est lui qui a donné cette réponse en demandant si cela convenait

    de toute façon, la meilleure façon pour tester une requête, c'est encore de l'exécuter.

    Je ne suis pas sur qu'on puisse faire un count sur 2 colonnes, j'aurais de mon côté utilisé un concat pour relier nom et prénom. Mais peut etre que la requête proposée avant fonctionne déjà

  9. #9
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    @Cybher

    Sous informix ce n'est pas || pour la concaténation plutôt ?

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  10. #10
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par Chtulus Voir le message
    Bonjour,

    @Cybher

    Sous informix ce n'est pas || pour la concaténation plutôt ?

    Bonjour Chtulus
    C'est quoi le syntaxe de la requette en ||

  11. #11
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Citation Envoyé par Chtulus Voir le message
    @Cybher

    Sous informix ce n'est pas || pour la concaténation plutôt ?

    possible, je ne connais pas informix

    sinon, pour la syntaxe, bah regarde un peu comment tu concatène 2 champs sous Informix, il faut aussi chercher un peu

  12. #12
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 754
    Points : 2 985
    Points
    2 985
    Par défaut
    Un détail : ta table est mal construite car que fais-tu en cas d'homonyme (deux Jacques Dupont) ?

    Idéalement tu devrais avoir un Etudiant_ID.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  13. #13
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Merci cavo789 pour la remarque, Mais dans ce problème on me demande de ne pas toucher les structures de mes tables

  14. #14
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    As-tu essayé cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT count(DISTINCT Nom || Prenom)  
    FROM T_Note 
    WHERE DateNote BETWEEN "01/01/2007"  AND "31/12/2007"
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  15. #15
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par Chtulus Voir le message
    Bonjour,

    As-tu essayé cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT count(DISTINCT Nom || Prenom)  
    FROM T_Note 
    WHERE DateNote BETWEEN "01/01/2007"  AND "31/12/2007"
    Non ca marche pas j'ai le message :
    201: A syntax error has occurred.

  16. #16
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    il nous faut un informixien pour répondre...
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  17. #17
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 49
    Points : 37
    Points
    37
    Par défaut
    Bien tu peux faire ça en deux temps en concaténant lorsque tu crée une vue (mais attention ça ne corrige pas le problème qui se pose d'avoir deux étudiants avec exactement le même nom et prénom) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE VIEW temp_etudiant
    AS SELECT CONCAT(Nom,Prenom) AS ID_Etudiant, DateNote, Note
    FROM T_Note
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(distinct ID_Etudiant)
    FROM temp_etudiant
    WHERE DateNote BETWEEN "01/01/2007"  AND "31/12/2007"
    Voilà après je ne sais pas comment on peut concaténer sous informix c'est à toi de chercher la syntaxe... Mais dans tous les cas il faut que tu refasses tes tables car tu ne vas pas aller loin sans un champ qui te sert de clef primaire pour identifier chaque étudiant.

  18. #18
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Est ce que vous pouvez poster un exemple de concaténation qui marche sous INFORMIX.
    Merci

  19. #19
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    D'après ce lien, CONCAT et || devraient marcher tous les deux.

    http://publib.boulder.ibm.com/infoce...oc/dbdk127.htm

    à toi de tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CONCAT(Nom, Prenom) 
    FROM T_Note
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Nom || Prenom
    FROM T_Note
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  20. #20
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Bonjour

    Pour la requette :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT DISTINCT(Nom || Prenom) 
    FROM T_Note
    WHERE DateNote BETWEEN "01/01/2007" AND "31/12/2007"
    Ca marche.
    Mais je veux le nombre pas la liste ca ne marche plus si je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT COUNT(DISTINCT(Nom || Prenom) )
    FROM T_Note 
    WHERE DateNote BETWEEN "01/01/2007" AND "31/12/2007"
    201: A syntax error has occurred

    Merci pour l'aide

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/06/2011, 10h50
  2. Nombre d'enregistrement qui ont moins de xx secondes
    Par cadoudal56 dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/03/2009, 15h41
  3. Réponses: 14
    Dernier message: 03/10/2008, 16h30
  4. [XPATH] Compter le nombre d'attributs qui ont une valeur donné
    Par doozor dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/05/2008, 10h06
  5. Réponses: 2
    Dernier message: 24/08/2007, 09h48

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