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 :

[Access] supprimer les doublons sur deux champs


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut [Access] supprimer les doublons sur deux champs
    bonjour,

    je cherche a supprimer les doublons sur deux champs en gros j'ai un champ numéro et un champ nom de rue et quand il s'agit d'immeuble j'ai autant de lignes qu'il y a d'habitants je souhaiterai donc que pour un immeuble il ne s'affiche qu'une seule ligne avec un autre champ (date client) qui soit le plus vieux. Est-ce possible ?? ça fais deux jours que j'essaye et je ne vois aucune solution a l'horizon.
    merci de votre aide

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Je pense qu'il te faut un group by numero (d'immeuble) pour n'avoir qu'une seule ligne et un having max pour le dernier client.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut
    merci pour ta réponse mais en faite ce qui me pose un réel problème c'est de réussir à supprimer les adresses identiques car quand je les groupe il y en a toujours autant .
    merci d'avoir pris le temps de lire mon message et d'y répondre

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    bon chuis pas modo ici, mais c'est vrai qu'on voit pas bien avec si peu de données où tu veux en venir.

    peux-tu donner succinctement la structure de tes tables, et un exemple de ce que tu souhaites obtenir ?

    En SQL, quand on arrive à représenter visuellement ce qu'on souhaite obtenir à partir d'un jeu d'essai, 50% du travail est fait ...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut
    alors j'ai une table qui contient plusieurs dont 3 qui m'intéressent : le champ numéro (qui donne le numéro de la rue), le champ nom rue (qui donne le nom de la rue) et le champ date client (qui donne l'année d'arrivée du client). Dans le cas où plusieurs clients habitent le même immeuble j'ai par exemple 10 fois la même adresse cad le champ numéro et le champ nom rue. Ce que j'aimerai faire c'est pouvoir supprimer 9 clients sur les 10 afin de garder une seule adresse par immeuble dans ma table où la date client serait la plus vieille.
    j'espère que la vous comprenez mieux ce que je souhaite faire.
    merci d'avance

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    bon, c'est un peu plus clair, bien que toujours incomplet, je vais donc extrapoler et te dire ce que moi j'ai compris en tous cas.

    En gros, tu veux obtenir, par numéro et nom de rue la date de la première entrée parmi toutes les entrées de tes clients.

    Si c'est ça, c'est relativement simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT numero,nom_rue,MIN(date_client)
    FROM    table
    GROUP BY 1,2
    ORDER BY 1,2
    PS : Ce que je demandais c'était d'avoir le contenu de ta table (i.e. la liste -ou un extrait- des enregistrements de ta table) et la mise en forme de la sortie que tu attendais (regarde les conseils de formulation de ta demande qui font partie de la charte dans ce forum).

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut
    voisi un bout de ma table :

    NUMERO NOM RUE ANNEE1
    57 RUE DU GRAND CHEMIN 1985
    57 RUE DU GRAND CHEMIN 1984
    57 RUE DU GRAND CHEMIN 1999
    57 RUE DU GRAND CHEMIN 1989
    57 RUE DU GRAND CHEMIN 2001
    15 AVE GUSTAVE DELORY 2006
    15 AVE GUSTAVE DELORY 1999
    15 AVE GUSTAVE DELORY 2000

    j'aimerai obtenir :
    NUMERO NOM RUE ANNE1
    57 RUE DU GRENAD CHEMIN 1984
    15 AVE GUSTAVE DELORY 1999

    l'année 1 est l'année d'entrée la plus ancienne d'une personne à l'adresse.

  8. #8
    Membre du Club Avatar de crovette51101
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Points : 57
    Points
    57
    Par défaut

    Je pense qu'une requete de ce style pourrait éventuellement faire l'affaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM matable WHERE annee1=MIN(annee1) GROUP BY appartement
    A tester!

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut
    merci mais ça ne fonctionne pas il me dit "impossible d'avoir une fonction d'agrégat dans la clause WHERE ANNEE1=MIN(ANNEE1)" en plus je en sais pas pourquoi mais le SELECT * ne veut pas fonctionner non plus alors je suis obligé de selectionner mes champs un par un

  10. #10
    Membre du Club Avatar de crovette51101
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Points : 57
    Points
    57
    Par défaut
    tu travailles dans quelle base?
    moi je t'ai dit ca pour Access, peut etre utilises tu autre chose qui ne correspond pas mais c'est etrange que meme un SELECT * ne marche pas!

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut
    bah je travaille sur access , je sais que c'est étrange ça me la déjà fait. C'est peut-être parce que la table je l'ai importer d'excel ?

  12. #12
    Membre du Club Avatar de crovette51101
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Points : 57
    Points
    57
    Par défaut
    Possible je n'ai encore jamais tenter l'importation depuis excel!
    Je peux néanmoins te proposer quelque chose!
    ta table importé depuis excel est sous la forme d'une table normal, auquel cas recré la meme table avec les meme champs et tout et fait une requete qui va prendre tous ce que tu as dans ta table importer depuis excel vers celle que tu auras recreer comme ca on verra bien si c'est dus au fait que le premiere table est importer depuis excel!
    Tiens moi au courrant et si aprés l'avoir transferer dans une autre table tu peux faire un SELECT* essaie alors de faire la requete que je t'ai donné plus haut

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut
    bon j'ai fais tout ce que tu m'as dis, ça change rien du tout j'ai toujours le même pb pour le SELECT * et toujours le même message pour la clause WHERE ANNEE1=MIN(ANNEE1) mais merci de ton aide

  14. #14
    Membre du Club Avatar de crovette51101
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Points : 57
    Points
    57
    Par défaut
    je suis desolé de ne pas avoir pu t'aider de plus, mais le je ne vois vraiment pas d'ou peux venir le probleme, ou alors tu aurai une version ancienne d'access qui ne le faisait pas mais je pense pas car moi je bosse sur du 2000 et je n'ai jamais rencontré de problemes!
    bon courage!

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par nini94
    voisi un bout de ma table :

    NUMERO NOM RUE ANNEE1
    57 RUE DU GRAND CHEMIN 1985
    57 RUE DU GRAND CHEMIN 1984
    57 RUE DU GRAND CHEMIN 1999
    57 RUE DU GRAND CHEMIN 1989
    57 RUE DU GRAND CHEMIN 2001
    15 AVE GUSTAVE DELORY 2006
    15 AVE GUSTAVE DELORY 1999
    15 AVE GUSTAVE DELORY 2000

    j'aimerai obtenir :
    NUMERO NOM RUE ANNE1
    57 RUE DU GRENAD CHEMIN 1984
    15 AVE GUSTAVE DELORY 1999

    l'année 1 est l'année d'entrée la plus ancienne d'une personne à l'adresse.
    c'est bien ce que j'avais compris, et la requête que j'ai écrite plus haut doit fonctionner en remplaçant bien sûr MIN(date_client) par MIN(annee1) car dans la structure que tu nous as donné au début tu parlais d'un champ "date client" de type date, et non pas d'un champ ANNEE1 de type entier.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut
    merci ça fonctionne
    je vais pouvoir continuer ma base

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

Discussions similaires

  1. comment chercher les doublons sur deux champs (ou plus)
    Par alili mostafa dans le forum Bases de données
    Réponses: 4
    Dernier message: 31/05/2010, 19h09
  2. Réponses: 1
    Dernier message: 02/07/2008, 18h49
  3. Autoriser les doublons sur un champ
    Par marco_fot_hxc dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 29/04/2008, 09h40
  4. [Oracle] Recherche de doublons sur deux champs
    Par BiM dans le forum Langage SQL
    Réponses: 28
    Dernier message: 04/01/2007, 12h52
  5. Eviter les doublons sur un champ SQL Serveur 2005
    Par crashyear dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2006, 08h02

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