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 :

Enlever les données identiques dans une table


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 8
    Points
    8
    Par défaut Enlever les données identiques dans une table
    Salut !

    Sujet transféré (http://www.developpez.net/forums/sho...d.php?t=265957)

    J'ai une base de données Informations.mdb dans laquelle il y a une Table nommée Items dans laquelle j'aimerais enlever toutes les données identiques dans un champs en particulier nommé Descriptions. J'aimerais conserver le premier ou le dernier, aucune importance...

    Est-ce que quelqu'un peut m'aider ? J'utilise ADO !

    Merci beaucoup à l'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 220
    Points : 19 549
    Points
    19 549
    Billets dans le blog
    25
    Par défaut
    1) renommer la table
    2) création de table au travers d'un select distinct sur la table renommée
    3) Supprimer l'ancienne
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 736
    Points : 52 447
    Points
    52 447
    Billets dans le blog
    5
    Par défaut
    Voyez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/doublons/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par SQLpro
    Voyez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/doublons/

    A +
    Un énorme merci pour cet article !

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Avec le code ci-dessous j'obtiens une erreur: Aucune valeur donnée pour un ou plusieurs des paramètres requis

    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
    Private Sub Command1_Click()
     
    'Instanciation des variables
            Set rs = New ADODB.Recordset
            Set cn = New ADODB.Connection
    'Connection et ouverture de la Database
            cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Program Files\Estima\Projets\88888.mdb"
    'Ouverture de la Connection =
            cn.Open
    'Création de la requête
            strSQL = "SELECT DISTINCT * FROM Items T1 WHERE EXISTS (SELECT * FROM Items T2 WHERE T1.DataID <> T2.DataID AND T1.Description = T2.Description)"
            cn.Execute strSQL
            strSQL = "DELETE FROM Items T WHERE T.DataID < ANY (SELECT DataID FROM Items WHERE T.DataID <> T2.DataID AND T.Description = T2.Description)"
            cn.Execute strSQL
    'Fermeture du RecordSet
            cn.Close
            Set rs = Nothing
     
    End Sub
    Pouvez-vous m'aider, désolé je suis tout nouveau dans ce domaine...

    Merci à l'avance !

  6. #6
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    pour ta nouvelle question, apparement ce n'est pas une erreur ADO, tu devrais peut-être aller la poser sur le forum VB

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Sur ta requète Delete, tu as oublié l'alias T2 dans ta sous requete. Et comme résultat Access n'arrive pas à savoir ce que peut être T2.DataID ou T2.description.
    Une requete correcte est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DELETE FROM Items T 
    WHERE T.DataID < ANY 
        (  SELECT DataID 
           FROM Items   as T2  
           WHERE T.DataID <> T2.DataID 
                 AND T.Description = T2.Description
         )
    Je ne sais pas ce que tu veux faire du select mais avec cette syntaxe, je crains que ce ne soit pas concluant, regardes les tutoriels ado.
    A+
    Soazig

  8. #8
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par soazig
    Bonjour,
    Sur ta requète Delete, tu as oublié l'alias T2 dans ta sous requete. Et comme résultat Access n'arrive pas à savoir ce que peut être T2.DataID ou T2.description.
    Une requete correcte est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DELETE FROM Items T 
    WHERE T.DataID < ANY 
        (  SELECT DataID 
           FROM Items   as T2  
           WHERE T.DataID <> T2.DataID 
                 AND T.Description = T2.Description
         )
    Merci ça fonctionne !

  9. #9
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par soazig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DELETE FROM Items T 
    WHERE T.DataID < ANY 
        (  SELECT DataID 
           FROM Items   as T2  
           WHERE T.DataID <> T2.DataID 
                 AND T.Description = T2.Description
         )
    À partir de cette requête ci-dessus qui fonctionne très bien, comment je fais pour ajouter une condition genre un champ(Dep) doit être égale à une telle valeur(plancher) ???

    J'ai essayé ce qui suit et j'obtiens la même erreur que ci-haut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELETE FROM Items T 
    WHERE T.DataID < ANY 
        (  SELECT DataID 
           FROM Items   as T2  
           WHERE T.DataID <> T2.DataID 
                 AND T.Description = T2.Description
                 AND T.Dep = Plancher
         )
    Merci d'avance !

  10. #10
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Personne ne peut m'aider ???

    Merci à l'avance...

  11. #11
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par DubeiserTM
    À partir de cette requête ci-dessus qui fonctionne très bien, comment je fais pour ajouter une condition genre un champ(Dep) doit être égale à une telle valeur(plancher) ???

    J'ai essayé ce qui suit et j'obtiens la même erreur que ci-haut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELETE FROM Items T 
    WHERE T.DataID < ANY 
        (  SELECT DataID 
           FROM Items   as T2  
           WHERE T.DataID <> T2.DataID 
                 AND T.Description = T2.Description
                 AND T.Dep = Plancher
         )
    Merci d'avance !
    Est-ce possible ce que je demande ici, ou je cherche pour rien ???

    Merci !

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    A vu de nez j'aurais tendance à penser qu'access ne connais pas Plancher.
    Qu'est-supposé être plancher?
    Un champ de quelle table , une variable ? autre chose?
    Cordialement
    Soazig

  13. #13
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par soazig
    A vu de nez j'aurais tendance à penser qu'access ne connais pas Plancher.
    Qu'est-supposé être plancher?
    Un champ de quelle table , une variable ? autre chose?
    Cordialement
    Soazig
    Plancher est une entrée faisant parti du champs Dep de la table Items...

    Merci !

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Si je comprend bien Plancher est une chaine de caractère qui fait partie des données présentes dans le champ dep de la table item.
    Dans ce cas comme c'est une chaine de caractère,il faut le dire au SGBD, il ne peut pas le deviner tout seul, et pour le dire il faut le mettre entre quote.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DELETE FROM Items T 
    WHERE T.DataID < ANY 
        (  SELECT DataID 
           FROM Items   as T2  
           WHERE T.DataID <> T2.DataID 
                 AND T.Description = T2.Description
                 AND T.Dep = 'Plancher'    )
    Si c'est bien cela tu devrais lire un ou deux tutoriel sur le sql, car c'est le b. a ba.
    Cordialement
    Soazig

  15. #15
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par soazig
    Si je comprend bien Plancher est une chaine de caractère qui fait partie des données présentes dans le champ dep de la table item.
    Dans ce cas comme c'est une chaine de caractère,il faut le dire au SGBD, il ne peut pas le deviner tout seul, et pour le dire il faut le mettre entre quote.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DELETE FROM Items T 
    WHERE T.DataID < ANY 
        (  SELECT DataID 
           FROM Items   as T2  
           WHERE T.DataID <> T2.DataID 
                 AND T.Description = T2.Description
                 AND T.Dep = 'Plancher'    )
    Si c'est bien cela tu devrais lire un ou deux tutoriel sur le sql, car c'est le b. a ba.
    Cordialement
    Soazig
    Merci beaucoup pour ton coup de main et ta patience !

    Que siginifie b. a ba.

    Bonne fin de journée !

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Le B. A. BA (mon mari m'a indiqué qu'il l'écrivait ainsi) est une méthode d'apprentissage de la lecture (B+ A se prononce BA). C'est une expression indiquant que cela fait partie des connaissances de bases d'un domaine particulier.

    Cordialement
    Soazig

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/05/2013, 16h37
  2. Enlever les retours chariot dans une table
    Par snoopo dans le forum SQL
    Réponses: 5
    Dernier message: 09/12/2011, 15h19
  3. [DATA] Repérer les données vides dans une table
    Par Deciprog dans le forum SAS Base
    Réponses: 2
    Dernier message: 16/04/2010, 10h41
  4. Enlever les données identiques dans une table
    Par DubeiserTM dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/01/2007, 19h27
  5. [SQL 2005] Insertion de deux données identiques dans une table
    Par skystef dans le forum Accès aux données
    Réponses: 3
    Dernier message: 04/01/2007, 23h50

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