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 :

Doublon dans Sql Serveur 2000


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 38
    Points : 27
    Points
    27
    Par défaut Doublon dans Sql Serveur 2000
    Bonjour,

    J'ai une base de données client avec des clients qui sont en doublon sur les critères : nom, prenom, code_postal, ville.
    La clé unique du fichier est idclient.
    J'ai récupéré cette base de données avec des clients doubles.

    On me demande d'extraire pour traitement les doublons client sur les critère précédement cité en resortant l'idclient, nom,prenom,adresse,code_postal,ville.

    On ne veux que les vieux client, c'est a dire que le client doublon le plus récent doit etre exclue.

    Y a-t-il un moyen en Sql de sortir ce qui m'est demandé.

    J'execute actuellement un traitement par programmation, mais il est extraimement lent, j'ai deux requete :
    une premiere requete avec mes critère en select plus l'id client, trié par idclient décroissant.
    une deuxieme requete avec les critères en select et un group by sur ces critère, ce qui enlève tous les doublons.
    J'effectue ensuite une rechere en faisant une comparaison egalitaire sur les critere nom, prenom, code_postal, ville entre la duxieme requete et la première, j'enleve ensuite de la première requete la premiere ligne correspondante, je passe ensuite a la deuxieme ligne de la deuxieme requete etc...
    Il ne me restera dans ma première requete que les doublons les plus vieux. le problème c'est que c'est extremement long.

    Avez-vous une autre solution ?

    Merci.

  2. #2
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    Par défaut
    Tu vas ordonner les clients avec un ORDER BY avec les plus vieux au début. Par la suite, ta requête SQL doit comprendre les colonnes doublées seulement. Tu utilises ensuite ta commande DISTINCT pour éviter les doublons.

    Avant de poster : FAQ, tutos, rechercher, google, ... Après :
    Merci

  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 : 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 Re: Doublon dans Sql Serveur 2000
    Citation Envoyé par FilipeVV
    Bonjour,

    J'execute actuellement un traitement par programmation, mais il est extraimement lent, j'ai deux requete :
    une premiere requete avec mes critère en select plus l'id client, trié par idclient décroissant.
    une deuxieme requete avec les critères en select et un group by sur ces critère, ce qui enlève tous les doublons.
    J'effectue ensuite une rechere en faisant une comparaison egalitaire sur les critere nom, prenom, code_postal, ville entre la duxieme requete et la première
    Merci.
    Merci de poster ton code pour plus d'inspiration et nous allons te poster un code tout SQL

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

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 38
    Points : 27
    Points
    27
    Par défaut
    Mon bute est de retrouver le client dans la base de données afin d'aller mettre un bit a vrai (bit signifiant ancien-doublon ou non-doublon) ?

    voila pourkoi un distinct ne fonctionne pas cas j'ai besoin dans mon select de récupérer l'idclient, qui lui est unique meme quand on a des doublon sur les critères précédements cités.

    Avez- vous d'autre soution ?

    Voici le code que j'utilise actuellement :

    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
    20
    21
    22
    23
    24
    25
    26
     
    select idclient, titre, nom, prenom, adresse, code_postal, ville
    from tableclient
    order by idclient desc
     
    je met le résultat de la requete dans un tableau (table1)
     
    select nom, prenom, adresse, code_postal, ville
    from tableclient
    groupe by nom, prenom, adresse, code_postal, ville
     
    Je met le résultat de la requete dans un tableau (table2)
     
    en suite je parcours les deux tableaux et j'effecture des traitements de la manière suivante :
     
    pour i=1 a nbligne(table2)
        pour j=1 a nbligne(table1)
            si nom[i]=nom[j] et prenom[i]=prenom[j] et adresse[i]=adresse[j]
            et code_postal[i]=code_postal[j] et ville[i]=ville[j] alors
                suppression ligne j dans la table1
                sortie de la boucle j
            fin
        fin
    fin
     
    Il ne me reste à la fin du traitement dans la table1, que les vieux doublons, il ne me reste plus qu'a récupéré les idclients et à les mettre en ancien doublon.
    Si vous avez une autre manière de le faire faite le moi savoir, merci.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 847
    Points : 52 961
    Points
    52 961
    Billets dans le blog
    6
    Par défaut
    Lisez l'article que j'ai écrit à ce sujet : http://sqlpro.developpez.com/cours/doublons/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Chercher occurence dans base sql serveur 2000
    Par davis dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/10/2007, 16h40
  2. Supprimer une image dans une table SQL Serveur 2000
    Par Soobook dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/09/2006, 17h00
  3. Recreer les indexs de table dans SQL serveur 2000
    Par FilipeVV dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/03/2006, 15h30
  4. Taille Maxi pour un SQL SERVEUR 2000
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 21/07/2003, 09h37
  5. Supprimer une colonne sous SQL Serveur 2000
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/07/2003, 12h24

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