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

MS SQL Server Discussion :

PB: Insertion de doublon


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 82
    Points : 55
    Points
    55
    Par défaut [Resolu]PB: Insertion de doublon
    Salut à tous,

    Je suis débutant en SQL serveur.

    J'ai différentes tables qui ont 3 colonnes en commun le nom, le prenom et l'adresse.
    Chaque table est déjà dédoublonnée.
    Je veux créer une table qui contiendrait l'ensemble des personnes sans avoir de doublons. Cette table ne contiendrait que ces 3 champs ce qui ne poserait pas le probleme de savoir quel enregistrement choisir.
    Comment faire?

    De plus ces tables sont grosses (environ 50000 enregistrements chacune). Il y en a 9.

    Je vois bien une solution qui consisterait à parcourir chaque table et comparer chaque enregistrement avec la nouvelle table, mais c pas forcement l'idéal.

    Avez vous une bonne idée?

    Merci de votre aide.

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select nom as nom, prenoma as prenom, adressa as adresse 
    from matable1
    union
    select monchamp_nom,monchamp_prenom,monchamp_adresse from matable2
    union
    select nom,pren,adr from matable3

  3. #3
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 82
    Points : 55
    Points
    55
    Par défaut
    En ce qui concerne les doublons, comment vont-ils être gérés?

  4. #4
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 567
    Points
    19 567
    Billets dans le blog
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    create proc MesPersonnes
    as
    begin
    select nom,  prenom, adresse 
    into #t
    from matable1 
     
    insert into #t 
    select monchamp_nom,monchamp_prenom,monchamp_adresse 
    from matable2 
     
    insert into #t 
    select nom,pren,adr 
    from matable3
     
    select distinct nom, prenom, adresse
    from #t
    drop table #t
    end

  5. #5
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Citation Envoyé par maxvador
    En ce qui concerne les doublons, comment vont-ils être gérés?
    L'union fait que les doublons sont éliminés

    For example, Table1 and Table2 have the same two-column structure.

    Table1 Table2
    ColumnA ColumnB ColumnC ColumnD
    ------- --- ------- ---
    abc 1 ghi 3
    def 2 jkl 4
    ghi 3 mno 5


    This query creates a UNION between the tables:

    SELECT * FROM Table1
    UNION
    SELECT * FROM Table2

    Here is the result set:

    ColumnA ColumnB
    ------- --------
    abc 1
    def 2
    ghi 3
    jkl 4
    mno 5

  6. #6
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 82
    Points : 55
    Points
    55
    Par défaut
    En fait je pensais mettre une contrainte d'unicite sur les 3 champs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER TABLE test ADD CONSTRAINT UNI_NOM_PRENOM_ADRESSE UNIQUE(nom, prenom,adresse)
    Et ensuite d'insérer avec le sql manager.

    Maintenant j'ai un autre probleme

    En fait ce que je dois faire à légèrement changé, mes tables initiales et contiennent d'autres champs: ville tel, email...
    Il faudrait maintenant que ma table finale contiennent toute ces informations. Malheuresement toutes les colonnes des tables ne sont pas toujours renseignées. Il manque pour certaine personne le numéro de telephone ou l'email alors qu'il est présent dans une des autres tables.

    1) Est-il possible de savoir quand la contrainte est violée (donc doublon) afin de verifier si les autres champs ne sont pas vides pour ensuite updater les colonnes de la table finale avec les infos du doublon?

    2) il faut que je sauvegarde l'identifiant unique de la personne de la table finale dans la table source.

    Je suis pas très doué en T-SQL alors un peu d'aide m'aiderait beaucoup.

  7. #7
    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 : 47
    Localisation : Congo-Brazzaville

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Citation Envoyé par fadace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    create proc MesPersonnes
    as
    begin
    select nom,  prenom, adresse 
    into #t
    from matable1 
     
    insert into #t 
    select monchamp_nom,monchamp_prenom,monchamp_adresse 
    from matable2 
     
    insert into #t 
    select nom,pren,adr 
    from matable3
     
    select distinct nom, prenom, adresse
    from #t
    drop table #t
    end
    Fadace, excellente solution, vous avez de l'inspiration !!!
    J'avoue que la solution de vitman aussi renvoie les mêmes resultats puis que le mot Cle UNION supprime automatiquement les doublons.
    Alors tu as en face de toi 2 bonnes solutions pour te tirer de ton problème.

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

Discussions similaires

  1. insert avec doublons
    Par loreleï85 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/01/2007, 09h05
  2. [MySQL] Insertion de doublon avec primary key
    Par darkbob dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/12/2006, 16h38
  3. [MySQL] insert into doublons
    Par camzo dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/12/2006, 15h47
  4. insertion avec doublon
    Par epeichette dans le forum Requêtes
    Réponses: 6
    Dernier message: 19/05/2006, 15h49
  5. [Postgresql] insertion sans doublon
    Par Pwill dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 08/06/2005, 11h37

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