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 :

[SQL] problème sur le delete


Sujet :

MS SQL Server

  1. #1
    Membre régulier Avatar de luimême
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 121
    Points
    121
    Par défaut [SQL] problème sur le delete
    Bonjour,
    je décris ci-dessous ma problèmatique

    Description :
    Je dispose de données dans une table, je souhaite faire des suppressions en me basant uniquement sur une de mes colonnes
    Mes données peuvent être du type suivant:
    maColonne
    A
    A
    A
    B
    B
    C
    C
    D
    E

    Question :
    Je souhaiterais supprimer toutes les lignes de valeurs différentes sauf une.

    Résultat voulu :
    maColonne
    A
    B
    C
    D
    E


    Je pense qu'il faudrait ajouter une colonne temporaire pour identifier uniquement mes lignes. Et ainsi sélectionner les lignes à supprimer suivant cet identifiant. Auriez-vous des suggestions ?

    Merci de votre aide.

  2. #2
    Membre régulier
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par luimême
    Bonjour,
    je décris ci-dessous ma problèmatique

    Description :
    Je dispose de données dans une table, je souhaite faire des suppressions en me basant uniquement sur une de mes colonnes
    Mes données peuvent être du type suivant:
    maColonne
    A
    A
    A
    B
    B
    C
    C
    D
    E

    Question :
    Je souhaiterais supprimer toutes les lignes de valeurs différentes sauf une.

    Résultat voulu :
    maColonne
    A
    B
    C
    D
    E


    Je pense qu'il faudrait ajouter une colonne temporaire pour identifier uniquement mes lignes. Et ainsi sélectionner les lignes à supprimer suivant cet identifiant. Auriez-vous des suggestions ?

    Merci de votre aide.


    Bonjour,

    Idée: table intermediaire, insertion en faisant les controles à l'insertion.

    PMS

  3. #3
    Membre régulier Avatar de luimême
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 121
    Points
    121
    Par défaut
    Je ne suis pas sûr de ta réponse.

    Mais je ne peux pas me permettre un cursor
    parcourir toutes mes lignes et vérifier avant d'insérer.

    Je ne peux non plus utiliser le "select distinct" car trop coùteux par rapport à mon volume de données.

    N'y aurait-il pas la possibilité de tout faire en 2 ou trois requêtes.

  4. #4
    Membre régulier Avatar de luimême
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 121
    Points
    121
    Par défaut
    Voilà comment j'ai résolu le problème

    Peut-être qu'il y'a plus optimisé

    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
    27
    28
    29
    30
    31
    32
    33
     
    -- sélection des lignes en doublon sur la table temporaire #doublons
    select id,  CAST( (sqrt(count(*) - 1) ) as int ) as nbDoublons
    into #doublons
    from #mesLignes
    group by Id
    having count(*) > 1
     
    -- ajout colonne identity et colonne annule
    select *, IDENTITY (INT, 0 , 1) as idLigne, 0 as annule
    into #meslignesDeTravail
    from #mesLignes
     
    -- on selectionne les lignes a annuler
    update l set annule = 1
         from #meslignesDeTravail l
         inner join #doublons a on
    	l.Id = a.Id
     
    -- on sauvegarde une ligne pour chaque doublon
    update l 
    set annule = 0
    from #meslignesDeTravail
    inner join (
    	    select  Id , min(idligne) as lig 
    	    from #meslignesDeTravail
    	    where annule = 1
    	    group by Id 
                ) v on
                   l.Id = v.Id
                   and l.idligne = v.lig
     
    delete from #meslignesDeTravail where annule = 1

  5. #5
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    le lien
    http://sql.developpez.com/doublons/
    traite ton cas, tu peux y jeter un coup d'oeuil
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


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

Discussions similaires

  1. [SQL] Erreur sur un Delete en sql via php
    Par speed034 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/05/2007, 16h18
  2. [SQL] problème sur un group by
    Par d_token dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/09/2006, 10h38
  3. Réponses: 6
    Dernier message: 31/03/2006, 17h05
  4. PL/SQL problème sur Trigger
    Par kitsune dans le forum PL/SQL
    Réponses: 4
    Dernier message: 06/12/2005, 20h35
  5. Débutant SQL, problème sur une jointure censée exclure ??
    Par derfatypik dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/06/2005, 15h55

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