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 et SQL. Discussion :

Requête avec COUNT et DISTINCT ?


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Requête avec COUNT et DISTINCT ?
    Bonjour, avec les données suivantes :

    MEMBRES [MNumAdh, MNom, MPrenom, MDateNais, MPhoto, MEmail,
    VCode_Origine*, VCode_Habite*]
    EVENEMENTS [EId, ETitre, EPresentation, EDate, EImage, TNom*, MNumAdh*, VCode*]
    TYPES_EVENEMENTS [TNom]
    VILLES [VCode, VNom, CodePostal]
    PARTICIPER [MNumAdh*, EId*]
    KAMARAD [MNumAdh*, MNumAdh_kamarad*]
    IMOR [MNumAdh*, DateHeure, iTexte]
    MESSAGE [MNumAdh_envoie*, MNumAdh_recoit*, DateHeure, mTexte]


    Je dois trouver la requête suivante :

    Pour les membres qui ont envoyé plus de 4 messages, indiquez leur numéro d'adhérents, leur nom,leur prénom,le nombre de messages qu'ils ont reçus, et combien d'expéditeurs différents leur ont écrit


    j'utilise des GROUPBY mes jointures et des DISTINCt, mais je n'arrive pas à l'écrire correctement !!!

    Merci de votre aide.

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 707
    Points : 57 344
    Points
    57 344
    Billets dans le blog
    41
    Par défaut
    bonjour,

    ce genre de requête ne se rédige pas facilement d'une seule traite...
    Il faut décomposer le problème en passant par des requêtes intermédiaires, des sous-requêtes (des requêtes mettant en jeu d'autres requêtes).

    ... membres qui ont envoyé plus de 4 messages...
    voilà une 1ère requête intermédiaire facile à obtenir avec les assistants.

    Tu trouveras un exemple de requête un peu dans le genre ici. On passe par une sous-requête, le tout pouvant être effectué graphiquement avec les assistants requêtes d'Access.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci Fabien, j'ai essayé et je n'ai pas trouvé mieux que cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT MNumAdh,MNom,MPrenom
    FROM MEMBRES M, MESSAGE E
    WHERE M.MNumAdh=E.MNumAdh_envoie
    GROUP BY MNumAdh,MNom,MPrenom
    HAVING COUNT(MNumAdh_envoie)>=4
    AND E.MNumAdh_envoie=E2.MNumAdh_recoit
    AND E2.MNumAdh_recoit=
    (SELECT DISTINCT MNumAdh,MNom,MPrenom,COUNT(mTexte),COUNT(MNumAdh_envoie)
    FROM MEMBRES M2,MESSAGE E2
    WHERE M2.MNumAdh=E2.MNumAdh_recoit
    GROUP BY MNumAdh,MNom,MPrenom);
    cela fait une semaine que nous essayons et nous devons rendre notre projet à 18h00, l'algèbre relationelle est faites mais nous n'arrivons vraiment pas à traduire en SQL.

    Sans vouloir mendier, on a le cerveau cramé et on apprécierait que vous nous montriez comment la taper...

    De plus, nous n'utilisons pas le LEFT JOIN mais plutôt le WHERE et le AND !

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 707
    Points : 57 344
    Points
    57 344
    Billets dans le blog
    41
    Par défaut
    Comme je l’ai écrit, c’est beaucoup plus simple en décomposant le problème en plusieurs requêtes séparées :

    -1 requête pour sélectionner les membres qui ont envoyé plus de 4 messages
    -1 requête pour compter le nombre de messages reçus par membre
    -1 requête pour compter le nombre d’expéditeurs différents par membre qui reçoit.

    Je n’ai pu me rendre disponible d’ici 18h mais on s’les fait quand même ?? Pour la gloire ?

    De plus, nous n'utilisons pas le LEFT JOIN mais plutôt le WHERE et le AND !
    Dis à ton prof de passer ici, j’ai un ou deux trucs à lui dire à propos de l’écriture des jointures en SQL au 21ème siècle

Discussions similaires

  1. Lenteur requête avec count
    Par psmpa dans le forum SQL
    Réponses: 2
    Dernier message: 25/09/2008, 09h06
  2. Requête avec Count().
    Par SirDarken dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/07/2008, 18h14
  3. Imbrication de 2 requête avec "count" et division
    Par Chtulus dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/04/2008, 14h12
  4. requête avec COUNT ?
    Par delphim dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/02/2005, 14h46
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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