#1 Tue 08 September 2009 12:36
- fredericfridi
- Participant actif
- Date d'inscription: 2 Feb 2008
- Messages: 97
Comparer une table et un liste excel
Bonjour
je vous joint un table parcelle et une liste excel.
je voudrais savoir comment proceder pour connaitre les parcelle qui ne sont pas presente dans la table
et connaitre les parcelles qui ne sont pas presente dans la liste
j ai trouvé 6 parcelles de la table qui n etait pas dans la liste
mais je n arrive pas a trouver avec une requete deux parcelles qui sont dans laliste et pas dans la table
Dernière modification par fredericfridi (Tue 08 September 2009 15:14)
Hors ligne
#2 Tue 08 September 2009 13:29
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Comparer une table et un liste excel
Salut,
Code:
Select * from liste_Parcelles_domagné, XDATA_PARCELLES where liste_Parcelles_domagné.id=XDATA_PARCELLES.id into PresenceDansles2Tables
--->Inverser la sélection pour tes 6 entités de XDATA non présentes dans liste_Parcelles
Enregistrer PresenceDansles2Tables en .tab
Puis: fermer la table XDATA_PARCELLES puis:
Code:
Select * from liste_Parcelles_domagné, PresenceDansles2Tables where liste_Parcelles_domagné.id=PresenceDansles2Tables.id into Presence
--->Inverser la sélection pour avoir les 2 entités qui apparaissent dans Liste et non dans Presence
A+
Joël
Hors ligne
#3 Tue 08 September 2009 14:06
- fredericfridi
- Participant actif
- Date d'inscription: 2 Feb 2008
- Messages: 97
Re: Comparer une table et un liste excel
Bonjour
je trouve bien les six. mais la deuxieme requete ne me donne rien
Vous avez fait l' essaie et ca marche?
vous avez l'indentité des deux parcelles ?
merci
Hors ligne
#4 Tue 08 September 2009 14:13
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Comparer une table et un liste excel
Je viens d'essayer mais effectivement la 2ème requète ne me fait qu'une jointure entre les 2 tables.
Dernière modification par Spacejo (Tue 08 September 2009 14:13)
Hors ligne
#5 Wed 09 September 2009 07:49
- fredericfridi
- Participant actif
- Date d'inscription: 2 Feb 2008
- Messages: 97
Re: Comparer une table et un liste excel
Bonjour
Donc personne a la solution ????
Hors ligne
#6 Wed 09 September 2009 08:40
- Loublande
- Participant occasionnel
- Date d'inscription: 29 Oct 2008
- Messages: 38
Re: Comparer une table et un liste excel
Bonjour,
C'est un exemple quiu fonctionne pour moi :
Requete SQL pour differencier ce qui est présent dans un fichier Excel ouvert dans MapInfo mais ou il n'y a pas de lien avec la table MapInfo (dans l'exemple ci-dessous, l'id commun entre les 2 fichiers est "XX.numéro_du_dossier ")
DIA_2007 = export de DDC converti en Ecxel et ouvert dans MapInfo.
DIA_200_graphique = liaison entre la table DIA_2007 et le cadastre qui a été enregistrer sous forme de table.
Select * from DIA_2007 where DIA_2007.numéro_du_dossier not in (select DIA_2007_graphique.numéro_du_dossier from DIA_2007_graphique) into Resultat
Vous pouvez appliquer ceci pour votre deuxième demande.
Cordialement,
Hors ligne
#7 Mon 14 September 2009 20:48
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Comparer une table et un liste excel
Bonjour
Déjà la table XDATA_PARCELLES (1082 enregistrements) a un problème: une superposition des polygones d'ID 0960000C0086 et 0960000C0087. Pas grave pour la suite, mais...
Une fois corrigé j'utilise la requête:
Code:
Select * from XDATA_PARCELLES where id = any (select id from liste_Parcelles_domagné)
puis j'inverse la sélection dans la table XDATA_PARCELLES pour obtenir 6 parcelles de la table qui ne sont pas dans la liste (qui a elle 1081 enregistrements)
A l'inverse, la requête:
Code:
Select * from liste_Parcelles_domagné where id = any (select id from XDATA_PARCELLES)
puis j'inverse la sélection dans la table liste_Parcelles_domagné pour obtenir 5 parcelles de la liste qui ne sont pas dans la table
nb: l'utilisation de <> au lieu de = ne marche pas...il faut passer par l'inversion de sélection
Hors ligne
#8 Tue 15 September 2009 14:13
- fredericfridi
- Participant actif
- Date d'inscription: 2 Feb 2008
- Messages: 97
Re: Comparer une table et un liste excel
Merci beaucoup
Maurice comment vous êtes vous aperçu de la superposition ?
Hors ligne
#9 Tue 15 September 2009 17:33
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Comparer une table et un liste excel
Simple: il y a 1082 enregistrements dans la table et la requête
Code:
Select * from XDATA_PARCELLES Group By id
(que j'ai faite au début pour vérifier que id était bien un identifiant unique) donnait 1081 lignes.
Deux polygones portaient donc le même id et il s'est avéré que ces deux polygones étaient superposés.
Si l'objet est de rechercher dès le départ des chevauchements, on peut utiliser menu Objets->Vérification des régions avec l'option qui va bien...
Hors ligne
#10 Wed 16 September 2009 10:17
- jean-francois Behm
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 5 Sep 2005
- Messages: 212
- Site web
Re: Comparer une table et un liste excel
Bonjour,
... pour obtenir 5 parcelles de la liste qui ne sont pas dans la table
nb: l'utilisation de <> au lieu de = ne marche pas...il faut passer par l'inversion de sélection
Le not in fonctionne également (au lieu de =any et d'inverser la selection), je viens de vérifier.
Par contre je trouve 6 enregistrements pour le fichier excel !
Code:
Select * from XDATA_PARCELLES where id not in(select id from liste_Parcelles_domagné) into sel browse * from sel Select * from liste_Parcelles_domagné where id not in(select id from XDATA_PARCELLES) into sel1 browse * from sel1
Dernière modification par jean-francois Behm (Wed 16 September 2009 10:36)
Hors ligne
#11 Wed 16 September 2009 11:55
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Comparer une table et un liste excel
Bonjour
Merci de l'info pour l'utilisation de not in...
A tester: est-ce que ce not in marcherait sur un identifiant numérique ??
Cependant il est normal que vous ayez une parcelle de plus "dans la liste mais pas dans la table": c'est la 0960000C0086 car, comme je l'ai dit, elle ne figurait pas dans la table où deux parcelles se chevauchant avait le même id 0960000C0087 !
...et moi j'ai travaillé sur une table corrigée en supprimant le chevauchement et en créant la 0960000C0086 (conformément aux autres attributs)
Hors ligne