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

Langage SQL Discussion :

Question TSQL sur "Les doublons : détection et éradication"


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    octobre 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : octobre 2003
    Messages : 87
    Points : 90
    Points
    90
    Par défaut Question TSQL sur "Les doublons : détection et éradication"
    Bonjour,

    J'essaie de supprimer les doublons en suivant le point 2.1.2. de la page (http://sqlpro.developpez.com/cours/doublons/) Utilisation d'une fonction de ranking.
    .
    Je suis sous Sql Server 2005.

    Les requêtes sont les suivantes :
    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
    --1
    ALTER TABLE T_DOUBLON
    ADD COLUID uniqueidentifier
     
    --2      
    UPDATE T_DOUBLON
    SET    COLUID = newid()
     
    --3
    DELETE
    FROM   T_DOUBLON T
    WHERE  T.COLUID > ANY
       (SELECT COLUID
        FROM   T_DOUBLON T2
        WHERE  T.COLUID <> T2.COLUID
          AND  T.NUM    = T2.NUM
          AND  T.NOM    = T2.NOM
          AND  T.PRENOM = T2.PRENOM)
     
    --4
    ALTER TABLE T_DOUBLON
          DROP COLUMN COLUID
    Le point 3 ne fonctionne pas, je suis obligé de l'écrire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DELETE
    FROM   T_DOUBLON
    WHERE  T.COLUID > ANY
       (SELECT COLUID
        FROM   T_DOUBLON T2
        WHERE  T_DOUBLON.COLUID <> T2.COLUID
          AND  T_DOUBLON.NUM    = T2.NUM
          AND  T_DOUBLON.NOM    = T2.NOM
          AND  T_DOUBLON.PRENOM = T2.PRENOM)
    Est-ce normal de ne pas pouvoir donner d'alias lors de la commande DELETE (j'ai bien essayé en mettant DELETE FROM T_DOUBLON AS T mais ça ne change rien).

    Merci de vos éclaircissements par avance,

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Consultant Teradata
    Inscrit en
    septembre 2008
    Messages
    8 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Teradata
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2008
    Messages : 8 220
    Points : 17 148
    Points
    17 148
    Par défaut
    Vous pouvez essayer avec une fonction d'aggrégat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELETE
    FROM   T_DOUBLON
    WHERE  COLUID NOT IN 
       (SELECT MIN(T2.COLUID)
        FROM   T_DOUBLON T2
        WHERE  T_DOUBLON.NUM    = T2.NUM
          AND  T_DOUBLON.NOM    = T2.NOM
          AND  T_DOUBLON.PRENOM = T2.PRENOM)

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    octobre 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : octobre 2003
    Messages : 87
    Points : 90
    Points
    90
    Par défaut
    Merci de la réponse, mais ça n'est pas vraiment le problème évoqué.

    Je me demandais juste pourquoi on ne peut pas mettre un alias de table dans l'instruction DELETE sous SQL Server 2005
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DELETE
    FROM   T_DOUBLON T
    (...)
    Il s'agit peut-être d'une limitation de SQL Server...

  4. #4
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Bonjour,

    Effectivement, la norme SQL 2003 prévoit de pouvoir donner un alias à une table dans un ordre DELETE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM <target table> [ [ AS ] <correlation name> ]
    Peut-être que sous SQL Server 2005, il faut obligatoirement metter le mot-clef AS ?

    Cordialement,

    Arkhena
    A bove ante, ab asino retro, a stulto undique caveto

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    octobre 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : octobre 2003
    Messages : 87
    Points : 90
    Points
    90
    Par défaut
    Merci de la réponse.
    J'avais effectivement déjà essayé avec AS.

    Peut importe finalement. Il s'agissait juste de ma curiosité.

    Merci.

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

Discussions similaires

  1. Les doublons : détection et éradication
    Par Ni;co) dans le forum Installation
    Réponses: 2
    Dernier message: 30/11/2006, 17h30
  2. [Struts] question bete sur les Action et Form
    Par seb_fou dans le forum Struts 1
    Réponses: 2
    Dernier message: 06/09/2004, 16h24
  3. question générale sur les conteneurs
    Par tut dans le forum C++
    Réponses: 6
    Dernier message: 01/09/2004, 11h11
  4. Question générale sur les affectations ?
    Par Clemaster dans le forum C++
    Réponses: 5
    Dernier message: 09/08/2004, 18h03
  5. Question simple sur les threads :)
    Par momox dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/06/2003, 05h13

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