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

SQL Firebird Discussion :

Problèmes de requête de reperage de doublons


Sujet :

SQL Firebird

  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut Problèmes de requête de reperage de doublons
    Bonsoir a tous
    Décidément c'est pas mon jour de chance aujourd’hui

    Première préoccupation

    Voila deux requêtes qui apparament me permettent de reperer des doublons :
    requête 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT champ1, champ2, champ3
    FROM   MESINFORMATIONS T1
    WHERE  EXISTS (SELECT 1
                   FROM   MESINFORMATIONS T2
                   WHERE  T1.lacle <> T2.lacle
                     AND  T1.champ1 = T2.champ1
                     AND  T1.champ2 = T2.champ2
                     AND  T1.champ3 = T2.champ3)
    Réponses : 13154

    requête 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT champ1, champ2, champ3
    FROM   MESINFORMATIONS T1
    WHERE T1.LACLE < ANY (SELECT LACLE
                   FROM   MESINFORMATIONS T2
                   WHERE  T1.lacle <> T2.lacle
                     AND  T1.champ1 = T2.champ1
                     AND  T1.champ2 = T2.champ2
                     AND  T1.champ3 = T2.champ3)
    Réponses : 6677

    D'ou mes questions suivantes :
    1. C'est deux requêtes sont elles différentes ?
    2. Comment les comprendre alors ?


    Deuxième préoccupation

    Voici ma requête de suppression des doublons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    DELETE
    FROM   MESINFORMATIONS T1
    WHERE T1.LACLE < ANY (SELECT LACLE
                        FROM   MESINFORMATIONS T2
                        WHERE  T1.LACLE <> T2.LACLE
                          AND  T1.CHAMP1 = T2.CHAMP1
                          AND  T1.CHAMP2 = T2.CHAMP2
                          AND  T1.CHAMP3 = T2.CHAMP3)
    Ici ma question est la suivante :
    1. Ou puis je mettre une restriction pour qu'il supprime seulement les lignes ou champ4=2 par expemples ?


    j'ai opté pour cette requête mais je ne sais si elle traduit exactement ce que je veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DELETE
    FROM   MESINFORMATIONS T1
    WHERE T1.LACLE < ANY (SELECT LACLE
                        FROM   MESINFORMATIONS T2
                        WHERE  T1.LACLE <> T2.LACLE
                          AND  T1.CHAMP1 = T2.CHAMP1
                          AND  T1.CHAMP2 = T2.CHAMP2
                          AND  T1.CHAMP3 = T2.CHAMP3
                          AND CHAMP4=2)
    Là j'ai vraiment besoin d'aide.

    Merci a tous

  2. #2
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Requete 1 : ce sont toutes les lignes qui ont un doublon
    ex :
    L1 car elle est doublonnée avec L2 (et L3)
    L2 car elle est doublonnée avec L1 (et L3)
    L3 car elle est doublonnée avec L1 (et L2)

    Requete 2 : les lignes qui ont un doublon avec une cle inferieure à un des autres doublons
    ex: avec c1 < c2 < c3 et L1-c1 L2-c2 L3-c3
    L1 car il existe un doublon de clé plus grande
    L2 car il existe un doublon de clé plus grande
    mais pas L3 car il n'existe pas de doublon de clé plus grande


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DELETE
    FROM   MESINFORMATIONS T1
    WHERE CHAMP4=2
    AND T1.LACLE < ANY (SELECT LACLE
                        FROM   MESINFORMATIONS T2
                        WHERE  T1.LACLE <> T2.LACLE
                          AND  T1.CHAMP1 = T2.CHAMP1
                          AND  T1.CHAMP2 = T2.CHAMP2
                          AND  T1.CHAMP3 = T2.CHAMP3
                          )
    supprimera les doublons ( sans consideration sur le champ4) qui ont champ4 = 2 si les doublons associés ont une clé plus grande ... mais ce n'est peut etre pas exactement ce que tu cherches

  3. #3
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    Bonjour

    Merci pour ta réponse ! en fait je viens de comprendre en analysant les données.
    Expliqué de manière simple voila ce que j'ai compris !
    En fait les deux requêtes ramènent les mêmes résultats sous deux formes différentes ! la preuve 13154/2= 6677.
    La première fait ressortir tous les occurrences des doublons d’où 131254
    La deuxième fait ressortir une occurrence par doublons d’où 6677

    Maintenant j'ai pas bien compris ta deuxième explication, donc je fais encore des tests pour comprendre.
    merci

Discussions similaires

  1. Problème de requête SQL (Quasi doublons)
    Par easysoftoran dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/01/2015, 10h42
  2. Problème de requête sur des doublons
    Par Bobette dans le forum Débuter
    Réponses: 7
    Dernier message: 12/04/2012, 17h15
  3. Réponses: 12
    Dernier message: 02/01/2012, 18h38
  4. Réponses: 1
    Dernier message: 02/01/2008, 13h28
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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