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 MySQL Discussion :

Pourriez vous m'aider à formuler une requete > Select + Count + Group By


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Pourriez vous m'aider à formuler une requete > Select + Count + Group By
    Bonjour à tous les esprits vifs et les maitres du SQL

    Je viens à vous, après avoir pleuré toute les larmes de mon corps, n'arrivant pas à résoudre un problème sans doute basique qui sera sans aucun doute réglé en quelques secondes.

    Je vous énonce donc mon problème.

    Je travaille sur une table généalogique (table de mariages) - que je ne peux pas transformer -composée comme suite:
    Index - Année - Nom de l'époux - Prénon de l'époux - Code époux - Nom de l'épouse - Prénon de l'épouse - Code épouse

    Les deux colonnes qui m'intéressent dans ce cas sont CP époux et CP épouse.

    Ces deux colonnes contiennent des valeurs comprises entre A et Z.

    L'objectif est donc d'obtenir une liste se présentant comme ceci:

    A - 12 entrées
    B - 58 entrées
    C - 24 entrées
    ...

    J'arrive sans trop de difficulté à obtenir un Count pour une colonne, puis pour l'autre. Par contre je devrais obtenir une combinaison de ces données dans une seule liste et c'est la que je suis en train de me casser les dents

    L'un de vous aurait-il une idée lumineuse?

    Merci d'avance.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Bonjour,

    Peut-on voir les 2 requêtes ? Ça nous donnera le nom des champs et une idée de la structure de la table...

    ced

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Et bien la structure de ma table est la suivante, comme mentionnée plus haut,

    - Index (non index)
    - Annee (l'année du mariage)
    - NomM (nom de l'époux)
    - PrenonM (son prénom)
    - CodeM (une lettre allant de A à Z)
    - NomF (nom de l'épouse)
    - PrenonF (son prénom)
    - CodeF (une lettre allant de A à Z)

    Et pour ce qui est des requetes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CodeM, COUNT(CodeM) FROM MaTable GROUP BY CodeM
    Pour ce qui est de la seconde... ben je remplace les M par des F

    Au final j'obtiens donc une liste

    A - nombre de résultats pour M
    B - nombre de résultats pour M
    etc...

    et idem ensuite pour les F

    J'ai bien essayé hier une solution JOIN mais je n'ai pas abouti au résultat voulu (faudrai que je remette la main sur mon test)

    Merci

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Nouvelle tentative
    Nouvel essai:
    (Je m'éloigne peut-être de la solution...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CodeF AS Code FROM MaTable UNION
    SELECT CodeM AS Code FROM MaTable
    ORDER BY Code
    J'obtiens bien ma liste de A à Z mais aucune valeur chiffrée...

    Si quelqu'un a un peu d'inspiration...

  5. #5
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Essaie cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CODE_MF, SUM(NB_MF)
    FROM (SELECT CodeM CODE_MF , COUNT(CodeM) NB_MF FROM MaTable GROUP BY CodeM
    union SELECT CodeF CODE_MF, COUNT(CodeF) NB_MF FROM MaTable GROUP BY CodeM)
    GROUP BY CODE_MF

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par zoom61 Voir le message
    Essaie cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CODE_MF, SUM(NB_MF)
    FROM (SELECT CodeM CODE_MF , COUNT(CodeM) NB_MF FROM MaTable GROUP BY CodeM
    union SELECT CodeF CODE_MF, COUNT(CodeF) NB_MF FROM MaTable GROUP BY CodeM)
    GROUP BY CODE_MF
    J'ai testé ce code et je recois le message suivant: Every derived table must have its own alias

    Selon vous, une erreur de ma part?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Et bien il faut ajouter les alias, non ?

    sans tester je dirais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CODE_MF, SUM(NB_MF)
    FROM (SELECT mtm.CodeM AS CODE_MF, COUNT(mtm.CodeM) AS NB_MF FROM MaTable mtm GROUP BY CODE_MF
    UNION SELECT mtf.CodeF AS CODE_MF, COUNT(mtf.CodeF) AS NB_MF FROM MaTable mtf GROUP BY CODE_MF)
    GROUP BY CODE_MF

  8. #8
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 3
    Points
    3
    Par défaut aidz moi svp
    heeeeelp ... j'essaye depuis 2 jours d'implémenter une cpndition dans expression builderr de talend, la condition c'est

    le champ est égal row1.realise where date = (le mois courant de l'année derniere)

    comment implementer where dans talend

  9. #9
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Ce qu'il faut aliasser c'est la requête entre parenthèses , celle située après le FROM de plus haut niveau.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je viens de tester ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CODE_MF, SUM(NB_MF)
    FROM (SELECT CodeM AS CODE_MF, COUNT(CodeM) AS NB_MF FROM MaTable GROUP BY CODE_MF
    UNION SELECT CodeF AS CODE_MF, COUNT(CodeF) AS NB_MF FROM MaTable GROUP BY CODE_MF)
    GROUP BY CODE_MF
    et je recois toujours ce même message : "Every derived table must have its own alias"

    J'aimerais bien tester la piste évoquée juste au dessus mais je ne comprend pas trop bien comment 'aliasser c'est la requête entre parenthèses".

    Oui, vous pouvez le dire >

    Désolé de toujours vous déranger pour le même problème

  11. #11
    Membre confirmé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Points : 502
    Points
    502
    Par défaut
    le message est pourtant clair: chaque sous requete doit avoir un alias

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CODE_MF, SUM(NB_MF)
    FROM (SELECT CodeM AS CODE_MF, COUNT(CodeM) AS NB_MF FROM MaTable GROUP BY CODE_MF
    UNION SELECT CodeF AS CODE_MF, COUNT(CodeF) AS NB_MF FROM MaTable GROUP BY CODE_MF) MonAliasAuPif
    GROUP BY CODE_MF
    bon courage

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par juvamine Voir le message
    le message est pourtant clair: chaque sous requete doit avoir un alias
    Je n'ai jamais dit que le message n'était pas clair! Seulement que je ne suis pas doué en SQL.

    Au contraire, je crois justement que les personnes qui on participé à cette discussion on toutes pu apporter leur pierre a l'édifice et ont toutes été patiente!

    Merci pour votre aide!

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

Discussions similaires

  1. Pourriez vous m'aider svp.gallerie en jsp
    Par zis0907 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/12/2007, 18h03
  2. Pourriez-vous m'aider à transformer ce swf
    Par chapeau_melon dans le forum Flash
    Réponses: 11
    Dernier message: 28/11/2006, 11h32
  3. Réponses: 3
    Dernier message: 10/10/2006, 09h44
  4. Pourriez-vous m'aider pour cette simulation de ping ?
    Par andrianiaina dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 07/09/2006, 14h57
  5. Comment formuler une requête alter table ?
    Par cjo dans le forum Paradox
    Réponses: 2
    Dernier message: 29/12/2005, 03h11

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