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

Requêtes et SQL. Discussion :

trouver des doublons


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut trouver des doublons
    bonjour,
    le terme de doublons n'est peut-être pas le bon mais je n'en vois pas d'autre.
    voici mon problème.

    J'ai une table qui contient une liste de syndicats de communes (des regroupements de communes concernant une ou plusieurs compétances), et une tables en relation contenant la liste des communes.
    une communes peut faire partie de plusieurs syndicats.
    on me demande de faire apparaitre les syndicats ayant les memes adhérants.
    Par exemple le syndicat 1 a comme membres les communes a, b et c. le syndicat 2 a lui aussi comme membres les communes a, b et c.
    comment mettre en évidence tous les syndicats ayant les mêmes membres ?

    la seule solution que j'ai trouvé serait de créer un champ supplémentaire dans la table syndicat et par une moulinette d'y coller les identifiants de chacune des communes membres bout à bout. Il ne resterait plus ensuite qu' a faire une recherche de doublons sur ce champ supplémentaire.

    est-ce qu'il n'y aurait pas plus simple ?

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    pourquoi pas mais je n'arrive pas trouver ce que devrait faire la sous-requête.

  3. #3
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Aml77,

    D'après ce que je comprends, tu as les tables suivantes :

    Table Syndicats :
    - Id_Syndicat (clé primaire)
    - Nom_Syndicat
    ...

    Table Communes :
    - Id_Commune (clé primaire)
    - Nom_Commune
    ...

    Table Syndicats_Communes :
    - Id_Syndicat (clé primaire 1)
    - Id_Commune (clé primaire 2)

    Relations :
    Syndicats 1-----n Syndicats_Communes via Id_Syndicat ;
    Communes 1-----n Syndicats_Communes via Id_Commune.

    C'est bien cela ?
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    bonjour Richard
    oui c'est ça pile poil, une table syndicats, une table communes et une table intermédiaire pour faire le lien de plusieurs à plusieurs.

  5. #5
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Aml77,

    Il te faut donc la liste des communes qui appartiennent à plusieurs syndicats différents.

    Crér une requête R1, via l'assistant :
    - ajouter la table Syndicats_Communes (FROM) ;
    - passer en requête de regroupement (GROUP BY) ;
    - sélectionner Id_Commune et Count(*) (SELECT) ;
    - critères : Count(*) > 1.
    ==> liste des communes appartenant à plusieurs syndicats.

    Si tu veux retrouver la liste des syndicats de ces communes, créer une requête R2, via l'assistant :
    - ajouter la requête R1 (FROM) ;
    - ajouter la table Syndicats_Communes (FROM) ;
    - ajouter la table Communes (FROM) ;
    - ajouter la table Syndicats (FROM) ;
    - lier R1 à Syndicats_Communes via Id_Commune (JOIN) ;
    - lier Syndicats_Communes à Syndicats via Id_Syndicat (JOIN) ;
    - lier R1 à Communes via Id_Commune (JOIN) ;
    - sélectionner les champs que tu veux.
    ==> tu devrais obtenir le résultat souhaité.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    effectivement ce que tu proposes permet de savoir quelles sont les communes adhérant à plusieurs syndicat ainsi que la liste des syndicats en question mais cela ne me permet pas de savoir quels syndicats font doublons.

    le problème vient du fait que les requetes font apparaitre chacune des communes d'un syndicat sur des lignes distinctes.
    comme ça :

    id_syndicat id_commune
    1-----------------1
    1-----------------2
    1-----------------3
    2-----------------1
    2-----------------2
    3-----------------1
    3-----------------2
    3-----------------3

    dans ce cas les syndicats 1 et 3 font doublon : ils ont les mêmes communes
    moi je voudrais comparer la liste 123 avec la liste 12 puis la liste 123 etc
    et trouver les doublons
    mais je me demande si c'est possible tant que c1, c2 et c3 sont sur des lignes différentes.

  7. #7
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    OK, le cahier des charges a un peu changé.

    Dans ton exemple :
    - le syndicat 1 "possède" les communes 1, 2 et 3 ;
    - le syndicat 2 "possède" les communes 1 et 2 ;
    - le syndicat 3 "possède" les communes 1, 2 et 3.

    En admettant qu'il y ait :
    - le syndicat 4 qui "possède" les communes 1, 2, 3 et 4.

    Considères-tu que le syndicat 4 fait doublon avec les syndicats 1 et 3 ?
    ==> réponse par oui ou par non, STP.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    non

  9. #9
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bien.

    Donc, il te faut la liste des syndicats possédant exactement la même liste de communes, ni plus, ni moins.

    Il faudrait générer la table T1 suivante (2 champs) :
    - Id_Syndicat (clé primaire)
    - Id_Communes_concatenation (concaténation, dans un champ texte, de toutes les communes rattachées au syndicat)

    Ensuite, une requête R3 :
    - ajouter T1 (FROM) ;
    - ajouter T1 (FROM) ;
    - lier T1 à T1_1 via Id_Communes_concatenation (JOIN) ;
    - sélectionner T1.Id_Syndicat et T1_1.Id_Syndicat (SELECT) ;
    - critères : T1.Id_Syndicat<>T1_1.Id_Syndicat.

    Pas testé... mais tu vois l'esprit.

    Je ne connais pas VBA, mais il s'agit de faire une boucle de lecture sur Syndicats_Communes trié par Id_Syndicat avec une rupture à chaque changement de syndicat.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    merci pour tes réponses mais en fait tu me proposes de faire ce que je suggérais moi-même dans mon post initial : concaténer la liste des communes dans un nouveau champ et utiliser bêtement l'assistant doublons d'access sur ce nouveau champ.

    en fait j'ai déja fait un truc similaire il y a au moins 10 ou 12 ans et je peux retrouver le code mais je voulais savoir s'il n'existait pas un moyen plus simple ne passant pas par du vba.

    Je vais me résoudre à en passer par là

    merci à toi en tout cas

  11. #11
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Juste une idée, en passant : la création d'une requête "analyse croisée" pourrait t'éviter d'écrire du code pour le même résultat.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM First(Syndicat_Commune.Id_Commune) AS PremierDeId_Commune
    SELECT Syndicat_Commune.Id_Syndicat
    FROM Syndicat_Commune
    GROUP BY Syndicat_Commune.Id_Syndicat
    PIVOT Syndicat_Commune.Id_Commune;
    ==> te donne une ligne par syndicat avec les communes en colonnes (si tu n'en a pas trop).
    Ensuite, tu peux concaténer les champs des communes et chercher les doublons.
    Si tu as beaucoup de communes, l'assistant requête "analyse croisée" te le dira et, dans ce cas, le code est incontournable.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    c'est une très bonne idée mais finalement je viens de le faire en vba sans trop galérer (j'ai bidouiller mon code d'il y a dix ans). Par contre j'ai du coller la concaténation dans un champ mémo à cause du nombre de caractères et apparemment l'assistant doublons ne prends pas en compte les champs mémo
    je vais faire un count dans une requête pour voir ceux qui sont supérieurs à 1.
    mais je ne pourrais pas afficher la liste des syndicats en même temps car on ne peut pas faire un lien sur un champ mémo.
    je trouverai une solution plus ou moins élégante jeudi. Là je pars.

    Merci encore pour ton aide

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

Discussions similaires

  1. [WD18] Trouver des doublons d'enregistrement avec une requete SQL
    Par bruno.a dans le forum WinDev
    Réponses: 14
    Dernier message: 23/10/2014, 17h20
  2. [JDOM / XML] Trouver des doublons
    Par mond14 dans le forum Langage
    Réponses: 5
    Dernier message: 18/12/2013, 19h19
  3. Trouver des doublons dans une 2eme table
    Par hammag dans le forum SQL
    Réponses: 2
    Dernier message: 13/08/2013, 17h04
  4. Requête pour trouver des doublons
    Par islande dans le forum Langage SQL
    Réponses: 6
    Dernier message: 22/03/2012, 18h01
  5. Trouver des doublons de groupe de valeurs
    Par Grodard dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/03/2009, 20h04

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