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 :

Rechercher et compter les valeurs en tandem dans une table.


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 21
    Points : 17
    Points
    17
    Par défaut Rechercher et compter les valeurs en tandem dans une table.
    Bonjour,
    Je tente de retrouver et de compter les valeurs en tandem dans une table et qui se retrouvent sur différentes lignes.
    N'étant pas un pro Mysql, j'ai donc commencé à tester ma requête sur deux colonnes pour voir si je pouvais avoir un résultat probant.
    Voici la requête que j'ai trouvé:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT col1, col2, COUNT( * ) FROM ma_table GROUP BY col1, col2 HAVING count(*) >1
    Cela a très bien fonctionné et le résultat fut ceci:

    col1 col2 COUNT(*)
    6----12 ----2
    8 ----9------2

    Mon problème est que si, par exemple, je rajoute une colonne (col3) dans ma requête elle ne me sort que les valeurs qui sont en triples et non en double et qui apparaissent plus d'une fois. Quelqu'un peut me diriger vers la bonne solution.
    Merci.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Ta requête cherche les couples {col1, col2} en double dans la table.
    Si tu ajoutes col3, elle cherchera les triplets {col1, col2, col3} en double.

    Si tu veux ramener la col3 correspondant aux couples en double, il faut faire une jointure de la table avec ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT t1.col1, t1.col2, t1.col3
    FROM
    (
    	SELECT col1, col2 
    	FROM ma_table 
    	GROUP BY col1, col2 
    	HAVING count(*) > 1
    ) tmp
    	ON tmp.col1 = t1.col1
    	AND tmp.col2 = t1.col2
    ORDER BY t1.col1, t1.col2
    Cette dernière requête devrait te ramener autant de lignes qu'il y en a dans la table.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Bonjour CinePhil,
    Une petite précision au sujet de la requête que tu me proposes. Je suppose que l'abréviation "t1" doit être remplacé par le nom de ma table. Mais je ne vois pas trop ce que veut dire le "tmp".
    Pourrais-tu m'éclairer car pour l'instant, en l'essayant comme ça, il y a naturellement un avertissement d'erreur de syntaxe qui s'affiche.
    Merci de ton aide!

  4. #4
    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,
    L'ami Cinéphil a bafouillé un peu du clavier.
    Il devait être en surchauffe
    Ça devrait aller mieux comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT t1.col1, t1.col2, t1.col3
    FROM ma_table t1
    INNER JOIN
    (
    	SELECT col1, col2 
    	FROM ma_table 
    	GROUP BY col1, col2 
    	HAVING count(*) > 1
    ) tmp
    	ON tmp.col1 = t1.col1
    	AND tmp.col2 = t1.col2
    ORDER BY t1.col1, t1.col2

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Merci pour la correction Maljuna mais la requête ne me donne pas la réponse recherchée. Je crois vraisemblablement que je me suis mal exprimé donc je vais tenter d'être plus explicite.

    J'ai 3 colonnes qui peuvent se lire comme suit:

    Col1 Col2 Col3
    6 12 24
    3 11 52
    1 6 12
    6 9 12

    Mes doublons de même valeur sont "6" et "12" et se répètent 3 fois mais ces derniers se promènent dans les 3 colonnes. Je voudrais extraire spécifiquement ce doublon ainsi que le nombre de fois qu'il est dupliqué. Ma réponse devrait se lire un peu comme ceci:

    6-12= 3


    Est-ce possible?
    Merci de m'éclairer!

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Effectivement, tu as très mal expliqué ton besoin !
    Et le fait que tu cherches ces doublons dans plusieurs colonnes me laisse à penser que tu as un problème de modélisation de tes données.

    Pour trouver les doublons sur plusieurs couples de colonnes, je pense qu'il va falloir que tu fasses une union de requêtes similaires à celle qu'on t'a donnée.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/06/2014, 08h52
  2. Réponses: 2
    Dernier message: 23/11/2009, 20h11
  3. [SQL] Compter le nombre d'occurences dans une table par valeur
    Par SpaceFrog dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/04/2008, 17h22
  4. Les valeurs des tableaux dans une matrice
    Par fatma hamdi dans le forum Fortran
    Réponses: 1
    Dernier message: 30/03/2008, 23h33
  5. Réponses: 2
    Dernier message: 15/10/2007, 13h28

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