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 :

Contrôle champs identiques dans une table


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Points : 14
    Points
    14
    Par défaut Contrôle champs identiques dans une table
    Bonjour à tous!

    J'ai dans une table "contact" 3 colonnes intitulées Nom, Prénom et Userid:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Nom           Prénom         Userid
    DUPONT	    JUDIT	   JLOZAxxxxx
    DURANT	    RAQUEL	   RARAQxxxxx
    JOBERT	    LAURA	   LGORDxxxxx
    JOBERT	    LAURA	   LBAYHyyyy
    TASSIN 	    Celine	   CCRIExxxxx
    TARTUFFE    Roger          TROGxxxxx
    etc...

    Je cherche simplement à réaliser une requête me permettant de repérer dans ma table les utilisateurs ayant un nom et un prenom identique mais ayant un userid diffèrent.
    Ainsi dans mon exemple de table j'aurais en sorti:
    JOBERT LAURA LGORDxxxxx
    JOBERT LAURA LBAYHyyyy

    J'ai tâté du groupby, having tout ça, mais ne suis parvenu à rien de concluant.

    Quelqu'un saurait-il facilement m'aider ?

    D'avance merci!

    Fingertip.

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Une solution :

    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
    DECLARE @t TABLE
    (
     nom VARCHAR(50),
     prenom VARCHAR(50),
     userid VARCHAR(50)
    )
     
    INSERT @T VALUES ('DUPONT','JUDIT','JLOZAxxxxx');
    INSERT @T VALUES ('DURANT', 'RAQUEL','RARAQxxxxx')
    INSERT @T VALUES ('JOBERT','LAURA',	 'LGORDxxxxx')
    INSERT @T VALUES ('JOBERT','LAURA',	'LBAYHyyyy')
    INSERT @T VALUES ('TASSIN','Celine', 'CCRIExxxxx')
    INSERT @T VALUES ('TARTUFFE','Roger','TROGxxxxx')
     
    SELECT 
     DISTINCT
     T.nom,
     T.prenom,
     T.userid
    FROM @t AS T
    INNER JOIN @t AS T2
     ON T.nom = T2.nom
      AND T.prenom = T2.prenom
    WHERE T.userid <> T2.userid
    ++

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Points : 14
    Points
    14
    Par défaut
    Comment fonctionne cette requête ?

    La table "@t" est crée temporairement ? Elle est effacé après chaque utilisation de la requête ?

    Y'a t-il un moyen d'INSERT l'intégralité de ma table de contact automatiquement?
    Celle-ci contient plus de 10000 entrée, je n'ai donc pas l'intention de tous les taper à la main.

    Merci!

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Même réponse, un JOIN d'une table sur elle-même permet de repérer des doublons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT a.*
    FROM Contact a
    JOIN Contact b
     ON a.Nom=b.Nom and a.Prenom=b.Prenom
     AND a.UserId <> b.UserId
    Il m'arrive de suprimer un des doublons en utilisant le même genre de requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DELETE FROM a
    FROM Contact a
    JOIN Contact b
     ON a.Nom=b.Nom and a.Prenom=b.Prenom
     AND a.UserId > b.UserId

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Points : 14
    Points
    14
    Par défaut
    Oui parfait je m'en était rendu compte en bidouillant la requête du post précédent!

    Merci à vous, cette technique va me servir à plusieurs endroits ,)

  6. #6
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Si le nom et le prenom doivent etre uniques, posez une contrainte plutot que de faire du nettoyage par la suite...

    Cependant c'est pas une bonne idee d'apres moi, vous risqueriez d'avoir des plaintes de John Smith ou de Pierre Dupont...

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

Discussions similaires

  1. Sélection de 2 champs identiques dans 2 tables différentes
    Par Véronique75ca dans le forum Access
    Réponses: 3
    Dernier message: 28/06/2006, 09h33
  2. Test evenement sur champ vide dans une table
    Par eddyG dans le forum Access
    Réponses: 3
    Dernier message: 30/05/2006, 17h02
  3. Réponses: 2
    Dernier message: 04/05/2006, 11h34
  4. Créer un champ calculé dans une table
    Par tigevellou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/04/2006, 15h08
  5. Tous les champs SAUF dans une table.
    Par Yepazix dans le forum Bases de données
    Réponses: 1
    Dernier message: 28/08/2005, 16h01

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