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 :

Dédoublonnage sur plusieurs tables


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de Fredo02
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 146
    Points : 91
    Points
    91
    Par défaut Dédoublonnage sur plusieurs tables
    Bonjour,

    J'ai besoin de dédoublonner des groupes de tuples provenant de 2 tables.
    Ex : Un même client existe plusieurs fois et dispose de plusieurs contrats identiques.
    Je voudrais supprimer les doublons de client les plus anciens ayant strictement les mêmes contrats.

    Voici ma requête (qui ne fonctionne pas):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DELETE CLIENT
    FROM CLIENT cl1
    LEFT JOIN Contrat ct1 ON (cl1.id = ct1.id_clt)
    WHERE  ct1.date_ct > ANY (SELECT ct2.date_ct
    			FROM CLIENT cl2		
    			INNER JOIN Contrat ct2 ON (cl2.id != cl1.id AND cl2.id = ct2.id_clt)
    			)
    Disons que supprimer les doublons d'une même table ça va, mais si il y a jointure avec une autre table (contrat) ça me parait compliqué.
    Des idées ?

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    En effet, il faut supprimer les contrats rattachés aux clients que vous allez supprimer.
    Vous pouvez faire une requete explicite avant, ou modifier la contrainte d’intégrité entre les deux tables pour spécifier une suppression en cascade.

  3. #3
    Membre régulier Avatar de Fredo02
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 146
    Points : 91
    Points
    91
    Par défaut
    Sur la logique aucun soucis, c'est plutôt sur la requête que je bloque. Je ne parviens pas à comparer 2 ensembles (Client + Contrats).

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    comment identifiez vous que deux contrats sont identiques ?

  5. #5
    Membre régulier Avatar de Fredo02
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 146
    Points : 91
    Points
    91
    Par défaut
    Ils ont le même numéro d’émetteur "num_emt"
    mais chose important un client doublon est un client ayant exactement les mêmes contrats (pas un de plus ni un de moins)

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    En effet, c'est important.

    Vous êtes donc dans un cas de division relationnelle. Et ce n'est pas parmi les cas les plus simples !

    Vous pouvez déjà regarder l'article de SQLPro à ce sujet.

    Si vous avez du mal à l'implémenter, fournissez un jeu d'essai sous forme de create table + insert into.

Discussions similaires

  1. [AC-2010] Dédoublonnage sur 1 table entre plusieurs champs distincts
    Par Jubelee_lee dans le forum Access
    Réponses: 2
    Dernier message: 16/06/2015, 12h19
  2. Encore une requête complexe sur plusieurs tables
    Par DenPro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/12/2003, 20h05
  3. order by sur plusieurs tables
    Par Mad_Max dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/12/2003, 13h17
  4. Requête complexe sur plusieurs table
    Par DenPro dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/11/2003, 18h50
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 17h26

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