Pages: 1
- Sujet précédent - séléction des objets d'une table à partir d'une autre table - Sujet suivant
#1 Thu 14 September 2006 16:05
- jerome976
- Participant occasionnel
- Lieu: Mayotte
- Date d'inscription: 12 Sep 2005
- Messages: 42
séléction des objets d'une table à partir d'une autre table
Bonjour,
Je travaille actuellement sur deux tables : bati et districtes.
Je souhaite imprimer chaque districte indépendamment avec seulement le bâti qui le contient (sans le bâti hors du districte).
Je me disais alors qu'il suffirait, faute de mieux, de faire une requête en demandant de faire apparaitre les objets du bâti à l'intérieur du districte X.
Mais voilà, je ne sais pas comment m'y prendre car visiblement, pour séléctionner un objet d'une table à partir d'un objet contenu dans une autre table, il faut faire une jointure.
Merci pour votre aide.
Jérôme Blanchet
Chargé de mission SIG
Direction de l'Equipement - Mayotte
Hors ligne
#2 Thu 14 September 2006 16:20
- gecomo
- Participant occasionnel
- Date d'inscription: 13 Aug 2006
- Messages: 38
Re: séléction des objets d'une table à partir d'une autre table
Bonjour,
Il y a un moyen simple en faisant une requête SQL, puis en sélectionnant les deux tables voulues, l'une après l'autre. Dans la partie CRITERES apparaît la mention Table1.Obj Contains Table2.Obj. Puis il faudra sélectionner les colonnes des différentes tables qui devront figurer dans la nouvelle table ainsi créer (Table intersect).
Evidemment, il faut que les points aient des coordonnées X et Y (je ne sais pas trop si ça fonctionne avec les Z aussi, jamais essayé) et dans le même système de référence (pour ça, il y a toujours l'outil Extracteur de coordonnées.
Voilà.
Si il y a encore besoin de renseignements....
Hors ligne
#3 Fri 15 September 2006 07:23
- jerome976
- Participant occasionnel
- Lieu: Mayotte
- Date d'inscription: 12 Sep 2005
- Messages: 42
Re: séléction des objets d'une table à partir d'une autre table
Donc, si je veux séléctionner les objets bâti contenus à l'intérieur d'un districte en particulier (appelons-le X), je n'ai pas d'autre choix que de faire une première séléction pour réaliser une jointure, puis faire enfin la séléction qui m'interesse ?
Il n'existe pas de procédés permettant de faire ma séléction en une seule étape (sans jointure préalable) ?
Jérôme Blanchet
Chargé de mission SIG
Direction de l'Equipement - Mayotte
Hors ligne
#4 Fri 15 September 2006 09:06
- gecomo
- Participant occasionnel
- Date d'inscription: 13 Aug 2006
- Messages: 38
Re: séléction des objets d'une table à partir d'une autre table
Bonjour,
Qu'entendez-vous par jointure ? Une nouvelle table ?
Dans la requête SQL, vous pouvez demander à ce que le résultat vienne dans une nouvelle table (ce que nous faisons généralement au bureau) ou non. Mais de toute manière, vous ne couperez pas à la requête SQL car c'est la seule qui permet (à ce que je sais) de requêter sur la position spatiale (ce qu'indique le .obj) d'éléments.
En gros, vous avez déjà une table de bâtie (avec coordonnées XY) et une table de districts (avec coorodnnées XY). Vous faites une requête SQL et vous créer une nouvelle table qui comprend, pour le district 1 tous les bâtis dedans (avec des colonnes provenant de la table district originale (comme le nom etc..) et des colonnes qui proviennent de la table bâti (n° d'identification ou autres). Ainsi, pour chaque district, vous aurez une table avec les bâtis contenus dedans.
Cela répond-t-il à la question ?
Hors ligne
#5 Fri 15 September 2006 09:38
- jerome976
- Participant occasionnel
- Lieu: Mayotte
- Date d'inscription: 12 Sep 2005
- Messages: 42
Re: séléction des objets d'une table à partir d'une autre table
Non !
J'entend par jointure la première requête qui créera une table temporaire sur laquelle je pourrais faire ma requête. Visiblement, pour séléctionner mon bâti à l'intérieur d'un objet de la table districte je DOIS créer une nouvelle table issue d'une requête où les objets de la table districte contient les objets de la table bâti. Et à partir de là, je pourrai enfin séléctionner mon district avec le bâti qui se trouve à l'intérieur. Mais cette démarche ne me convient pas car elle m'oblige à créer une table temporaire intermédiaire alors que j'aimerai simplement faire une séléction directe à partir de mes tables d'origines.
Je reprend : ma table districte comprend 120 districtes numérotés. Je possède par ailleurs une table Bâti. Je veux isoler le bâti contenu dans le districte n°95. Comment-dois-je m'y prendre concrêtement ? Quelle est la méthode qui nécessite le moins de manipulation ?
J'éspère me faire comprendre, si ce n'est pas le cas, peut-être que je demande quelque chose d'irréalisable !
Jérôme Blanchet
Chargé de mission SIG
Direction de l'Equipement - Mayotte
Hors ligne
#6 Fri 15 September 2006 09:45
- jean-francois Behm
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 5 Sep 2005
- Messages: 212
- Site web
Re: séléction des objets d'une table à partir d'une autre table
Bonjour,
une requête SQL s'impose :
dans la zone colonnes : *
dans la zone tables : Bâtis, districts
dans la zone critères : bâtis.obj within districts.obj AND districts.numero=95
Dans la zone résultat dans table : sel_batis_95
Commentaires :
dans colonnes : * (pour avoir tout les champs) ou le nom des colonnes à afficher
dans Tables : commencer par Bâtis pour sélectionner les objets de la couche Bâtis
dans criteres : si le champ numéro est du texte, mettre des guillemets
Le résultat est dans la table temporaire sel_batis_95 qui peut être ajoutée à la carte par le contrôle des couches.
En affichant préalablement à la requete la fenetre MapBasic, la syntaxe SQL s'écrira dans cette fenêtre et il suffira de changer le chiffre dans critere et dans resultat pour créer d'autres selections.
Remarque : les bâtis dont le centre est à l'extérieur du district (donc à cheval sur 2 districts par exemple) ne seront pas sélectionnés.
Bon courage
Dernière modification par jean-francois Behm (Fri 15 September 2006 09:51)
Hors ligne
#7 Fri 15 September 2006 10:07
- jerome976
- Participant occasionnel
- Lieu: Mayotte
- Date d'inscription: 12 Sep 2005
- Messages: 42
Re: séléction des objets d'une table à partir d'une autre table
Parfait, c'est exactement ce que je voulais faire !
Merci beaucoup et bon week-end.
Jérôme Blanchet
Chargé de mission SIG
Direction de l'Equipement - Mayotte
Hors ligne
Pages: 1
- Sujet précédent - séléction des objets d'une table à partir d'une autre table - Sujet suivant