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 détecter des doublons multilignes


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Par défaut Comment détecter des doublons multilignes
    Bonjour,

    Je souhaite détecter des doublons composés de plusieurs lignes.
    Je m'explique : j'ai par exemple ceci en base :

    ID Rang Nom
    CodeExpression1 1 Toto
    CodeExpression1 2 Titi
    CodeExpression2 1 Tata
    CodeExpression2 2 Titi
    CodeExpression3 2 Toto
    CodeExpression3 3 Titi

    Pour mon cas les CodeExpression1 et CodeExpression3 sont des doublons !
    Mais je n'arrive pas à trouver une requête qui me permette de les détecter

    Est-ce que quelqu'un aurait une solution svp ?

    Merci
    Xav

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 143
    Par défaut
    Citation Envoyé par xavmeuh Voir le message
    Pour mon cas les CodeExpression1 et CodeExpression3 sont des doublons !
    Pourquoi ? Selon quel critère ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Ca semble assez difficile à faire, vu que tu dois comparer des ensembles...
    (si j'ai bien compris, c'est {Toto, Titi} = {Toto, Titi} qui te fait dire que ce sont des doublons ?)

    Petites questions :
    est-ce que les valeurs de ta troisième colonne sont dans une autre table de référence (clef étrangère) ?
    est-ce que le nombre de valeurs possibles est grand ?

    En gros, une idée marrante pourrait être :
    - Numéroter à partir de 0 tes valeurs possibles, et mettre cette correspondance dans une table. On va appelle ce numéro TonIndice.
    - Faire la jointure avec ta table principale, grouper par le premier champ, et calculer somme(2^TonIndice).
    - Ordonner sur ce résutlat dans une sur-requête.

    Après, on peut faire encore plus compliqué, mais ça dépend comment tu voudrais que ton résultat soit formulé...
    Ouais, ça marche que s'il n'y a pas trop de valeurs, à cause de l'overflow...

    (Ouah, le soir, j'ai des idées bien pourries)

    EDIT : Il faut aussi l'unicité sur le couple Colonne 1, colonne 3. Sinon, en fonction de ce que tu appelles des doublons, il faut faire un distinct

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Par défaut
    C'est bien par couple que cela fonctionne comme l'a déduit pacmann : c'est {Toto, Titi} = {Toto, Titi}.

    Petites questions :
    est-ce que les valeurs de ta troisième colonne sont dans une autre table de référence (clef étrangère) ?
    NON
    est-ce que le nombre de valeurs possibles est grand ?
    pour l'instant non mais il risque de le devenir malheureusement...

    Pour le coup je pourrai tenter ta soluce avec une table tempo que je construis avec mes valeurs mais j'ai peur de vite saturer...

    en solution, une requête ou une procédure stockée peuvent me convenir mais je sèche bien comme il faut...

    En gros il faudrait que je considère chaque "CodeExpression" comme un objet avec ses x valeurs et que je trouve les autres objets identiques (avec les mêmes valeurs quel que soit le rang).
    Mais le pb c'est que je ne suis pas en objet ;-(.

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

Discussions similaires

  1. [MySQL] Comment éviter des doublons dans une liste déroulante ?!
    Par L'anonyme_connu dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/03/2008, 11h14
  2. Réponses: 5
    Dernier message: 18/09/2007, 10h12
  3. [MySQL] Comment enlever des doublons lors de l'affichage d'un tableau dynamique ?
    Par wylls dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 22/12/2006, 14h54
  4. comment eviter des doublons dans un sous formulaire ??
    Par azde7015 dans le forum Access
    Réponses: 2
    Dernier message: 21/02/2006, 09h03
  5. [C#] Comment détecter des contrôles HTML ?
    Par Landolsi dans le forum ASP.NET
    Réponses: 14
    Dernier message: 23/01/2006, 12h13

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