Mise à jour des doublons [Résolu] - Forum SQL Server

Mise à jour des doublons Mise à jour fichier excel avec gestion des doublons » Forum - Excel Mise a jour android » Conseils pratiques - Android Windows update ne peut pas actuellement rechercher des mises à jour (Résolu) » Forum - Windows Impossible de terminer les mises à jour (Résolu) » Forum - Windows 8 / 8.1 Echec de la configuration des mises à jour de windows 7 » Forum - Windows

Bonjour,
je travaille sur un projet de creation des comptes mail. Mes champs sont email, nom , prenom,fonction . j'ai des doublons au niveau des emails parce que j'ai les memes nom et prénoms mais les personnes sont bien différentes. Ce que je veux c'est que Si le mail existe deja , je voudrais mettre un 1 , un 2 , un 3 un 4... avant le @ ( une mise à jour au fait)
un exemple de ce que je veux obtenir:
***@***
***@***
***@***
***@***
***@***

Forum

Mise à jour des doublons Mise à jour fichier excel avec gestion des doublons » Forum - Excel Mise a jour android » Conseils pratiques - Android Windows update ne peut pas actuellement rechercher des mises à jour (Résolu) » Forum - Windows Impossible de terminer les mises à jour (Résolu) » Forum - Windows 8 / 8.1 Echec de la configuration des mises à jour de windows 7 » Forum - Windows

Web: www.shapebootstrap.net

26 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

bonjour
mets ton fichier dans un lien apres compression avec ci joint sur le site

Merci castours 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 24450 internautes ce mois-ci

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

bonjour
as tu resolu ton probleme
si oui marque resolu

Merci Castours 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 24450 internautes ce mois-ci

Reply
réponses:
  • deloydilo

    oui oui ça été resolu. merci bien. je cherche le bouton "resolu" depuis mais je vois pas.(je suis nouveau sur le site)

  • yg_be

    pour marquer résolu, utiliser la roue dentée à droite du titre.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Il faudrait nous dire quel est le langage / programme que tu utilises pour faire ces créations. La façon de te répondre en dépendra fortement...

Xavier

Reply
réponses:
  • auteur

  • auteur

    j'utilise MICROSOFT SQL SERVER 2012

  • HDU

    Bonjour,

    sql sert à stocker les données. Mais tu utilises quel langage pour manipuler ces données ???

    A+

  • HDU

    J'utilise du transact-SQL

  • Reivax962

    Donc tu as une requête de ce genre :

     UPDATE personne SET email = prenom + '.' + nom + '@truc.fr' 

    Avec éventuellement un WHERE. C'est bien ça ?

  • Reivax962

    Pour le moment j'ai pas lancé de requête. j'ai juste importé ma base de donnée depuis excel.
    Je veux donc faire une mise à jour des doublons au niveau des emails.
    Comme je l'ai expliqué, si l'email existe deja, je veux modifier le deuxième et mettre un 1 avant le @
    s'il y a un troisième doublon, je veux mettre 2 avant le arobase ainsi de suite. Mais je connais pas le code transact-SQL à ecrire

    EXEMPLE
    deloydilo(AROBASE)gmail.com
    deloydilo1(AROBASE)gmail.com
    deloydilo2(AROBASE)gmail.com
    deloydilo3(AROBASE)gmail.com

  • Reivax962

    Bonjour,

    Alors, si aucune donnée n'est encore rentrée dans la colonne email, tu peux faire une mise à jour de masse.
    Déjà on va valider que ça te convient en faisant un SELECT :

    select nom, prenom, prenom + '.' + nom + CAST(ROW_NUMBER() OVER (PARTITION BY nom, prenom ORDER BY nom) as VARCHAR(3)) + '@test.com' from ta_table


    Après, lors de l'ajout de nouvelles personnes, il faudra faire différemment car il s'agit de ne pas changer les mails des personnes déjà enregistrées... Et pour ça, un SELECT count(*) dans l'INSERT devrait répondre au problème.

    Xavier

  • auteur

    Ok Merci Xavier.
    Mais en fait j'ai deja les données enregistrées. je veux donc les mettre à jour selon la norme que j'ai dite
    Cordialement

  • Reivax962

    Oui j'ai bien compris, d'où la première partie de ma réponse.
    Tu as essayé le SELECT que je t'ai donné ?

  • Reivax962

    As-tu essayé la requête que je te propose pour vérifier que les emails obtenus te conviennent ? Une fois que c'est sûr on pourra faire l'UPDATE, qui se crée très facilement à partir du SELECT.

  • Reivax962

    Si tu ne comprends pas ce que je demande tu as le droit de me poser des questions... Là j'ai légèrement l'impression d'être ignoré alors que j'ai la solution à ton problème.
    Comment dire...

  • auteur

    Salut @Xavier, je voudrais bien partager mon fichier excel avec toi mais je sais pas comment faire. si tu vois le fichier , je pense que tu pourras facilement m'aider
    Cordialement

  • Reivax962

    As-tu exécuté, dans SQL Server, la requête que je t'ai donnée ? Que te renvoie-t-elle ?

  • deloydilo

    le bout de code concatene d'abord le [ nom+prenom [email protected]] Après il met les numero 1, 2, 3... comme j'ai dit. Mais le truc c'est que j'ai deja mes emails qui sont deja formé dans excel selon la norme NOM.DERNIER [email protected]
    c'est juste la mise à jour avec les 1, 2 , 3...au niveau des doublons que je veux
    je voudrais partager mon fichier excel si possible
    Cordialement.

  • Reivax962

    Je comprends mieux.
    Du coup, est-ce que cette requête te conviendrais mieux ?

     select nom, prenom, email,    REPLACE(email, '@',      CASE ROW_NUMBER() OVER (PARTITION BY email ORDER BY email)       WHEN 1 THEN ''       ELSE CAST(ROW_NUMBER() OVER (PARTITION BY email ORDER BY email) - 1 as VARCHAR(3))     END + '@') from ta_table


    Si le résultat te convient, dis-le moi que je te donne la méthode pour l'appliquer réellement dans ta base.

    Xavier

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

bonjour,
il me semble que tu introduis beaucoup de confusion avec ton idée de prénom et de nom servant à composer l'adresse email. peux-tu décrire plus clairement ce que tu souhaites faire, peut-être en donnant un exemple avant/après? tu nous montres l’après, parce que tu vois l'avant, mais nous ne le voyons pas.
je pense que ce que tu essaies de faire est assez simple à programmer, mais pas à faire via une requête.
dans quel but veux-tu faire cela, quel est précisément ton projet, avec quoi programmes-tu?

Reply
réponses:
  • auteur

    Ok. j'explique depuis le debut.
    j'ai une base de donnee Excel avec les champs email, prenom,nom.
    j'ai des doublons au niveau des emails. je veux pas supprimer ces doublons mais je veux juste mettre à jour. j'ai importé ma base de donnée dans SQL Server histoire de faire cette manip avec une requete.
    voici un exemple de ce que j'ai: deloydilo(AROBASE)gmail.com
    deloydilo(AROBASE)gmail.com
    deloydilo(AROBASE)gmail.com
    deloydilo(AROBASE)gmail.com

    si l'email existe,je veux que les autres doublons se mettent à jour de cette façon:

    EXEMPLE
    deloydilo(AROBASE)gmail.com
    deloydilo1(AROBASE)gmail.com
    deloydilo2(AROBASE)gmail.com
    deloydilo3(AROBASE)gmail.com


    Cordialement

  • yg_be

    je pense que ce que tu essaies de faire est assez simple à programmer, mais pas à faire via une requête.
    avec quoi programmes-tu?
    c'est sans doute simple à faire dans Excel en VBA.

  • auteur

    je programme avec Microsoft SQL server 2012.
    Excel en VBA? tu pourrais m'aider? je sais pas trop comment s'y prendre
    Cordialement

  • yg_be

    partage ton fichier excel, ou décris comment/où les données (email) y sont installées.
    décris aussi ce que tu souhaites que le code VBA fasse: modifier les mails, créer une nouvelle liste de mails uniques, ...

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

suggestion:

Option Explicit  Sub email() Const arob As String = "@" Dim ws As Worksheet Dim emails As Scripting.Dictionary Dim ligne As Range Dim email As String, pn As String, atdom As String, lastd As String, deb As String Dim posa As Integer, lastn As Integer  Set ws = Sheets("email") Set emails = New Scripting.Dictionary For Each ligne In ws.UsedRange.Rows     email = ligne.Cells(1, 1)     Do While emails.Exists(email)         posa = InStr(email, arob)         pn = Left(email, posa - 1)         atdom = Right(email, Len(email) - posa + 1)         lastd = Right(pn, 1)         If IsNumeric(lastd) Then             lastn = lastd             deb = Left(pn, Len(pn) - 1)             If lastn = 9 Then                 pn = deb & "01"             Else                 pn = deb & (lastd + 1)             End If         Else             pn = pn & "0"         End If         email = pn & atdom     Loop 'Do While emails.Exists(email)     emails.Add email, 0     ligne.Cells(1, 1) = email Next ligne  End Sub

Reply
réponses:
  • deloydilo

    je sais que tu veux m'aider mais là j'avoue que je suis perdu! lol
    C'est du Code VBA ça? je connais pas le VBA, juste quelque Requête SQL. Merci quand meme.
    Cordialement

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed