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

VB.NET Discussion :

Supprimer les lignes redondantes


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 296
    Par défaut Supprimer les lignes redondantes
    Bonjour
    Jai une table SQL qui peut contenir des éléments redondants.
    Exemple : Nom Age Ville
    A 20 X
    A 20 X
    B 30 Y
    B 30 Y
    B 30 Y

    Comment supprimer les lignes redondantes et ne laisser qu'un seul exemplaire de chauqe ligne ?
    J'aurai cet affichage :
    Nom Age Ville
    A 20 X
    B 30 Y

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Hello,
    tu n'as aucune clé primaire sur tes tables?
    Car dans ce cas, je ne vois pas de solution, dès que tu essayera dans suprimer une via la clause WHERE tu supprimeras toutes les lignes vu qu'il n'y à aucun moyen de les dissociés...

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    en théorie on met des clauses d'unicité qui évitent ce soucis

    pour supprimer si tu n'as pas de clé primaire la seule solution (pas terrible niveau perf mais fonctionnelle) c'est de faire un curseur et si tu trouves plusieurs fois la meme chose tu fais un delete from cursor (j'ai pu la syntaxe en tête)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre chevronné Avatar de _PascalC_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 220
    Par défaut
    Méthode très bourrin - car elle recontruit intégralement la table - qui marcherait avec SQL Server par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DECLARE @Buffer TABLE (Nom NVARCHAR(MAX), Age INT, Ville NVARCHAR(MAX))
    INSERT INTO @Buffer SELECT Nom, Age, Ville FROM MaTable GROUP BY Nom, Age, Ville
    TRUNCATE TABLE MaTable
    INSERT INTO MaTable SELECT Nom, Age, Ville FROM @Buffer

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    j'aurais plutot vu un distinct qu'un group by mais ca a au moins le mérite de faire moins de ligne que le cursor ^^
    m'enfin ca remplit un peu le log ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre chevronné Avatar de _PascalC_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 220
    Par défaut
    Je viens de trouver une autre solution moins moche si tu utilise SQL Server >= 2005 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    WITH Buffer(ID, Nom, Age, Ville)
    AS
    (
    	-- Attribue une clé à chaque ligne
    	SELECT ROW_NUMBER() OVER (ORDER BY Nom, Age, Ville) ID, Nom, Age, Ville 
    	FROM MaTable
    )
    DELETE FROM Buffer WHERE NOT ID IN (SELECT MIN(ID) FROM Buffer GROUP BY Nom, Age, Ville)

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/12/2006, 12h00
  2. [VB.NET]Comment supprimer les lignes d'un datagridView
    Par vijeo dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/09/2006, 17h54
  3. Supprimer les lignes vides d'un document Word
    Par Jerfa dans le forum VBA Word
    Réponses: 4
    Dernier message: 28/08/2006, 16h12
  4. Réponses: 2
    Dernier message: 04/05/2006, 13h10
  5. supprimer les lignes vides?
    Par VinnieMc dans le forum Langage
    Réponses: 5
    Dernier message: 27/02/2006, 14h01

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