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

Développement SQL Server Discussion :

Recherches de lignes identiques


Sujet :

Développement SQL Server

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 67
    Par défaut Recherches de lignes identiques
    Bonjour à tous,

    Je recherche depuis quelques temps le moyen de retrouver des lignes identiques dans une table au détail prêt d'un champ.
    Je m'explique
    dans ma table TABLE1, j'ai 5 champs (C1, C2, C3, C4, C5). J'aimerais retrouvé mes lignes ou 4 des champs (toujours les mêmes C1 à C4) sont identiques. Le champ C5 pouvant varier sur deux positions (0 ou 1)

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C1     C2       C3     C4           C5
    TOTO   TITI     250    20/01/2012	0
    TOTO   TITI     250    20/01/2012	1
    Merci d'avance

  2. #2

  3. #3
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Tu dois decrire un peu plus ton probleme.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  4. #4
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Par défaut
    Citation Envoyé par BenMarcel Voir le message
    Bonjour à tous,
    je recherche depuis quelques temps le moyen de retrouver des lignes identiques dans une table au détail pret d'un champ.
    Je m'explique
    dans ma table TABLE1, j'ai 5 champs (C1, C2, C3, C4, C5). J'aimerais retrouvé mes lignes ou 4 des champs (toujours les mêmes C1 à C4) sont identiques. Le champ C5 pouvant varier sur deux positions (0 ou 1)
    Exemple :

    C1 C2 C3 C4 C5
    TOTO TITI 250 20/01/2012 0
    TOTO TITI 250 20/01/2012 1

    Merci d'avance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT C1, C2, C3, C4, count(*) as NB
    FROM TABLE1
    GROUP BY C1, C2, C3, C4
    ORDER BY NB DESC

  5. #5
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Est ce que ce n'est pas ce que tu cherches ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select t1.c1,t1.c2,t1.c3,t1.c4,t1.c5
    from table1 t1 join table1 t2
    on t1.c1||t1.c2||t1.c3||t1.c4=t2.c1||t2.c2||t2.c3||t2.c4

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 354
    Par défaut
    Citation Envoyé par darkelend Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT C1, C2, C3, C4, count(*) as NB
    FROM TABLE1
    GROUP BY C1, C2, C3, C4
    ORDER BY NB DESC
    cela ramène aussi les éléments présent une fois, pour les ignorer on aurait pu faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select * from TABLE1 where C1 + ' ' + C2  + ' ' + C3 + ' ' + C4 in (
    SELECT  C1 + ' ' + C2  + ' ' + C3 + ' ' + C4 from TABLE1
    group by  C1 + ' ' + C2  + ' ' + C3 + ' ' + C4
    having count( C1 + ' ' + C2  + ' ' + C3 + ' ' + C4)>1 )

  7. #7
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Citation Envoyé par WOLO Laurent Voir le message
    Est ce que ce n'est pas ce que tu cherches ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select t1.c1,t1.c2,t1.c3,t1.c4,t1.c5
    from table1 t1 join table1 t2
    on t1.c1||t1.c2||t1.c3||t1.c4=t2.c1||t2.c2||t2.c3||t2.c4
    Il vaut mieux faire une égalité colonne par colonne, ça évitera les problèmes du genre AB + C = A + BC, et en outre ça utilisera les index.

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour,
    Citation Envoyé par negstek Voir le message
    cela ramène aussi les éléments présent une fois, pour les ignorer on aurait pu faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select * from TABLE1 where C1 + ' ' + C2  + ' ' + C3 + ' ' + C4 in (
    SELECT  C1 + ' ' + C2  + ' ' + C3 + ' ' + C4 from TABLE1
    group by  C1 + ' ' + C2  + ' ' + C3 + ' ' + C4
    having count( C1 + ' ' + C2  + ' ' + C3 + ' ' + C4)>1 )
    Pourquoi faire simple quand on peut faire compliquer un having count(*) suffit.
    Ce qui nous donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT C1, C2, C3, C4, count(*) AS NB
    FROM TABLE1
    GROUP BY C1, C2, C3, C4
    having count(*)>1
    ORDER BY count(*)  DESC
    Mais là je crois qu'on deterre méchament le topic qui date de mai 2012 quand même, depuis le temps j'espère que BenMarcel a trouvé la solution!

    Cordialement
    Soazig

  9. #9
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 354
    Par défaut
    Citation Envoyé par soazig Voir le message
    Bonjour,
    Pourquoi faire simple quand on peut faire compliquer un having count(*) suffit.
    parce qu'il a aussi une colonne C5 dont il ne faut pas tenir compte dans le regroupement et dans le nombre d'itération...

Discussions similaires

  1. Pb de select : retrouver lignes identiques
    Par lamf dans le forum Requêtes
    Réponses: 11
    Dernier message: 07/01/2006, 20h53
  2. [VBA-E] rechercher une ligne pour remplacer?
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/12/2005, 10h31
  3. Extraction de ligne identique
    Par sacados1 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 31/12/2005, 10h24
  4. Rechercher une ligne vide
    Par nico-pyright(c) dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 22/12/2005, 17h10
  5. Fonction de recherche de ligne...
    Par Zenol dans le forum Langage
    Réponses: 6
    Dernier message: 05/12/2005, 19h26

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