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 :

Dédoublonner mais pas le premier


Sujet :

MS SQL Server

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Dédoublonner mais pas le premier
    Salut

    Je susi confronté à un problème de doublon que je n'arrive pas à solutionner.
    J'ai donc une table avec Nom, prénom, adresse, ville et d'autres trucs.
    Dans cette table certaines personnes sont présentes plusieurs fois et je voudrais les marquer. J'ai un champ pour ça.

    L'idée est de dire que je veux garder la première occurence trouvée et marquer les autres occurences dans le champ prévu à cet effet.

    Mon problème est au tout début : je n'ai aucune idée de comment faire ça. J'ai pensé autojointure, mais j'arrive pas à trouver le point de jointure et même si je le trouve, je vois pas bien comment je vais pouvoir lui dire de laisser le premier et de flaguer les autres.

    Merci pour votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    Bonjour,

    Il faut une clé primaire (un id ou autre) pour pouvoir faire ça facilement, sinon par curseur mais grosse galère en perspective.

    Et pourquoi vouloir garder des doublons ?

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    SAlut et merci pour ton aide
    Une clé primaire, j'en ai une dans la table.

    Pourquoi garder les doublons : parce que ce sont des fiches de gens qui se sont inscrit sur des sites et nous voulons garder cette trace pour différentes raisons de gestion et de traçage.

    Mais j'ai toujours pas trouvé le moyen de le faire. As tu une piste à me proposer ?

  4. #4
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Bon, j'ai trouvé un truc qui à l'air de marcher, mais qui me pose un souci de détail. Voilà le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    UPDATE MEMBRES SET Id_erreur = 3 -- lignes à supprimer
    WHERE Id_Membre in (
    SELECT TOP 1000000 M.ID_Membre
    FROM MEMBRES M
      INNER JOIN MEMBRES D -- lignes à conserver
        ON M.Nom + M.Prenom + M.Adresse + M.Complement + CAST(M.Id_Ville as VARCHAR(10)) = 
    	D.Nom + D.Prenom + D.Adresse + D.Complement + CAST(D.Id_Ville as VARCHAR(10))
          AND M.Id_Membre <> D.Id_Membre -- évite qu'une ligne soit son propre doublon
    WHERE M.Date_Inscription < D.Date_Inscription AND M.Id_Membre < D.Id_Membre
    ORDER BY M.Date_Inscription
    )
    J'ai trouvé ça dans le forum MySQL.

    Mon souci de détail c'est qu'il me prends la première fiche trouvée en terme de date et je voudrais qu'il me prenne la dernière, enfin la plus récente.
    J'ai placé un ORDER BY mais DESC ou pas, il me prend toujours la même.

    Je sais pas quoi faire.

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Bon, j'ai compris le problème de date, désolé, mais j'arrive pas à manipuler ces bon dieu de truc là : < et >, je me plante tout le temps

    Mais un autre problème vient de surgir. Lorsque la date est équivalente (parce que y a un gars qu'à oublié de mettre un vrai GetDate et prendre l'heure en compte ! ! ! ) ben il me prend tout le monde qui a cette date, alors que je voudrais un seul. J'ai essayé d'ajouter l'id membre, vu que c'est un compteur ça devrait me donner un ordre d'arrivée, amis ça marche pas, ça continue de prendre tout le monde avec la mêm date.

    J'ai corrigé la requête de code dans mon précédent message.

    MErci pour votre aide.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/07/2013, 19h29
  2. Réponses: 1
    Dernier message: 21/01/2011, 16h17
  3. Réponses: 9
    Dernier message: 25/07/2007, 13h02
  4. Connection net OK mais pas d'internet accessible. Pourquoi ?
    Par Flo. dans le forum Développement
    Réponses: 2
    Dernier message: 08/09/2003, 14h49
  5. template match="node() mais pas text()"
    Par Manu_Just dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 26/03/2003, 10h52

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