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

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 32
    Points
    32
    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 régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 90
    Points
    90
    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
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 32
    Points
    32
    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 expérimenté

    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
    Points : 1 578
    Points
    1 578
    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 averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Salut,
    Je pense que le n'est pas très nécessaire.
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  6. #6
    Membre expérimenté

    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
    Points : 1 578
    Points
    1 578
    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 averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    le
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    having count(*) > 1
    ou
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    having count(*) >= 2
    peremt de connaître les données dupliquées. Ce que je voulais dire c'est qu'il n'est pas nécessaire de mettre un count(*) (de plus) dans la clause select. C'est un calcul vain.
    Me trompe-je?
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  8. #8
    Membre confirmé
    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
    Points : 546
    Points
    546
    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
    Mindiell
    "Souvent, femme barrit" - Elephant man

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    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.
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  10. #10
    Membre confirmé
    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
    Points : 546
    Points
    546
    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...
    Mindiell
    "Souvent, femme barrit" - Elephant man

  11. #11
    Membre expérimenté

    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
    Points : 1 578
    Points
    1 578
    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