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 avec d'autre champs à sélectionner


Sujet :

Langage SQL

  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut COUNT avec d'autre champs à sélectionner
    J'ai le MR suivant:

    ETUDIANT(noEtu,nomEtu)
    MATIERE(idMat, libMat)
    ABSENCE(#noEtu, #idMat, dateAb)

    et j'aimerai afficher en une seule requête à la fois le nombre d'absences pour un étudiant et en même temps la liste de absences concernées (date et libellé de matière):

    je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                SELECT a.dateAbsence, m.libMatiere, COUNT(a.dateAbsence) 
                     FROM ETUDIANT e, ABSENCE a, MATIERE m
                     WHERE e.nomEtu= 'toto'
                     AND e.noEtu = a.noEtu
                     AND a.dateAbsence > '2008-07-07' 
                     AND a.dateAbsence < '2006-02-01' 
                     AND a.idMatiere = m.idMatiere 
                     GROUP BY a.dateAbsence, m.libMatiere 
                     ORDER BY a.dateAbsence;
    Ensuite quand je décompose mon résultat et j'arrive à obtenir le nombre d'absences mais je n'ai pas la liste complête.

    Je pense que c'est un problème de GROUP BY.

    merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Ce sont deux requêtes différentes.

  3. #3
    Membre averti Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Points : 359
    Points
    359
    Par défaut
    Citation Envoyé par vmolines Voir le message
    Ce sont deux requêtes différentes.
    En effet !!

  4. #4
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    C'est un peu compliqué, mais tu auras ce que tu veux en une requête :
    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
    16
    17
    18
    SELECT   libmat, nometu, dateab,
             (SELECT COUNT (*)
                FROM absence INNER JOIN etudiant
                     ON absence.noetu = etudiant.noetu
                     INNER JOIN matiere
                     ON absence.idmat = m.idmat
               WHERE etudiant.noetu = e.noetu
                 AND matiere.idmat = m.idmat
                 AND dateab > 'date début'
                 AND dateab < 'date fin') AS nb_absence_total
        FROM absence a INNER JOIN etudiant e ON a.noetu = e.noetu
             INNER JOIN matiere m ON a.idmat = m.idmat
       WHERE nometu = 'nometu de l`étudiant'
         AND m.libmat = 'libmat de la matière'
         AND dateab > 'date début'
         AND dateab < 'date fin'
    GROUP BY libmat, nometu, dateab, e.noetu, m.idmat
    ORDER BY dateab

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

Discussions similaires

  1. Remplir automatiquement 1 champ text avec 2 autres champs text
    Par Dsphinx dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/05/2010, 21h11
  2. [FireBird] Distinct avec un autre champ
    Par jojo86 dans le forum Bases de données
    Réponses: 6
    Dernier message: 04/03/2008, 15h23
  3. Réponses: 3
    Dernier message: 01/08/2007, 09h26
  4. Réponses: 7
    Dernier message: 14/12/2006, 14h18
  5. introduire un count avec d'autres champs
    Par amelhog dans le forum Langage SQL
    Réponses: 13
    Dernier message: 18/08/2005, 14h57

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