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 :

comment faire une requete qui retourne les données repetées avec +champ?


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Par défaut comment faire une requete qui retourne les données repetées avec +champ?
    Bonjour

    quelle est la requete sql qui permette de retourner les enregistrement repetés
    avec 2 ou 3 champs
    exp :

    cham1 | champ2 | champ3
    ______|_______ |_______
    M1 |44 |ppp
    _______________________
    M2 |55 |mmm
    ________________________
    M1 |44 |ppp
    ________________________
    M1 |78 |ppp


    -ma requete (3champs) doit retourner l'enrg : M1 |44|ppp

    -ma requete (2champs) doit retourner l'enrg : M1 |ppp

    merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Par défaut
    bonjour, tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT ID, COUNT(ID) AS nb
    FROM TABLE
    GROUP BY ID
    HAVING COUNT(ID) > 1

  3. #3
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Par défaut
    bonjour

    ton example valable pour une clé composée d'un seul champs
    (having count(id)) mais ce que je voudrais,c'est de plus d'un champs

    merci

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    2 champs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select champ1, champ2, count(*)
    from matable
    group by champ1, champ2
    having count(*) > 1
    3 champs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select champ1, champ2, champ3, count(*)
    from matable
    group by champ1, champ2, champ3
    having count(*) > 1

  5. #5
    Membre chevronné Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Par défaut
    Salut,
    Je pense que le n'est pas très nécessaire.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    AL1986,
    Je pense que si, sinon comment savoir de façon simple que les données sont dupliquées ?

  7. #7
    Membre éclairé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Par défaut
    Citation Envoyé par PDelph7
    champ1 | champ2 | champ3
    ______|_______ |_______
    M1 |44 |ppp
    _______________________
    M2 |55 |mmm
    ________________________
    M1 |44 |ppp
    ________________________
    M1 |78 |ppp


    -ma requete (3champs) doit retourner l'enrg : M1 |44|ppp
    -ma requete (2champs) doit retourner l'enrg : M1 |ppp
    Je dirais une simple utilisation de distinct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select distinct champ1, champ3 from latable
    ou
    select distinct champ1, champ2, champ3 from latable

  8. #8
    Membre chevronné Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Par défaut
    La requête proposée par Mindiell peremet de récupérer les tuples répétés aussi bien sue ceux dont l'occurrence est unique :
    Pour la requête à deux champs sur la table en exemple en aura M1 ppp et M2 mmm alors que le résultat voulu n'est que M1 ppp
    En ce qui concerne la requête à trois champs, même pb. En plus, on aura les DEUX M1 (M1 44 ppp et M1 78 ppp) puisque c'est deux sont bel et bien distinct.
    Je pense que le count est indispensable.

  9. #9
    Membre éclairé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Par défaut
    Woups
    J'avions pas bien compris la question, en effet...
    La réponse de mercure est donc la bonne.

    Pour le count(*), j'ose éspèrer que SQL ne le compte pas 2 fois. Ca serait intéressant de vérifier...

  10. #10
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    Citation Envoyé par AL1986
    il n'est pas nécessaire de mettre un count(*) (de plus) dans la clause select. C'est un calcul vain.
    Me trompe-je?
    Je ne sais pas si tu te trompes ou non. La réponse doit dépendre du SGBD utilisé, mais, dans le doute, je mettrais le Count(*) sur la clause select en plus HAVING.

Discussions similaires

  1. Réponses: 10
    Dernier message: 08/04/2015, 07h54
  2. Réponses: 2
    Dernier message: 08/01/2009, 11h49
  3. Réponses: 10
    Dernier message: 28/07/2007, 15h53
  4. faire une requete qui ne sort que les valeurs d'un champ coché
    Par joseph.breham dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 13/12/2006, 16h01
  5. Réponses: 2
    Dernier message: 16/10/2006, 09h22

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