|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() alain Inscription : février 2011 Messages : 7 ![]() |
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 ? |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() alain Inscription : février 2011 Messages : 7 ![]() |
pourquoi pas mais je n'arrive pas trouver ce que devrait faire la sous-requête.
|
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
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. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() alain Inscription : février 2011 Messages : 7 ![]() |
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. |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
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. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
10
|
|
|
#6 |
|
Invité de passage
![]() alain Inscription : février 2011 Messages : 7 ![]() |
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. |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
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. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() alain Inscription : février 2011 Messages : 7 ![]() |
non
|
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
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. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() alain Inscription : février 2011 Messages : 7 ![]() |
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
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 |
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
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 :
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. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() alain Inscription : février 2011 Messages : 7 ![]() |
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 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com