#1 Tue 21 August 2001 21:55
- Galliard Delphine
- Invité
Sélection SQL
Bonjour,
J’ai un probleme tout simple que je n’arrive cependant pas a resoudre.
Je veux effectuer un requete SQL. J’ai une couche contenant les parcelles et l’autre les batiments. Il n’y a pas de jointure possible entre les deux car elles n’ont pas d’attributs communs.
Je souhaite obtenir une selection de toutes les parcelles ne contenant PAS de batiments.
Je dispose de la version 6.0 de MapInfo. On m’a indique qu’il y avait une commande Inverser la selection.
J’ai essaye avec l’operateur logique Not. Not(Parcelles.obj Contains Batiments.obj)
J’ai une reponse positive pour la verification de la syntaxe mais ensuite j’ai un avertissement me disant qu’il n’y a pas de liens dynamiques, une erreur dans la clause criteres.
Quelqu’un a t-il une solution ?
Merci.
Et remerciement a tous ceux qui m’ont repondu precedemment pour leurs precieux conseils.
#2 Tue 21 August 2001 21:54
- Roddier Sebastien
- Invité
Re: Sélection SQL
Bonjour a tous
Voici la requete SQL qui permet je pense de repondre a votre question
je dispose d'un table de departement (dep) et d'une table des etangs (etang) et je veux connaitre les departements qui n'ont pas d'etangs :
select * from dep where not obj contains any (select obj from etang)
il est evident que le critere geographique de la selection (intersects ou partly within ou autres) conditionne le resultat
voila j'expere que ceci vous aidera pour la suite..
a bientot
#3 Mon 03 June 2002 19:23
- Patrick Laurent
- Invité
Re: Sélection SQL
bonjour,
je souhaite dresser une liste de parcelles intersectant un trace de bus.
le nom de la couche parcelles est par, et la colonne avec le nom des parcelles est IDpar.le non du trace est b, la colonne est id
dans le tableau sql j'ai ecrit:
colonnes :par.id,b.id
table: par,b
criteres: par.obj intersect b.obj
La syntaxe est correcte, mais MI me met aucun enregistrement. Pouvez vous me conseiller une methode?
#4 Tue 04 June 2002 19:22
- Laurent
- Invité
Re: Sélection SQL
Bonjour,
Attention à la syntaxe sql: le critere est par.obj intersects b.obj
precisez la reponse de mapinfo
si c'est Aucun enregistrement eh bien desole mais il n'y a pas d'intersection
si il ne vous affiche aucun resultat c'est que vous avez decoche Afficher les donnees resultat dans la boite de dialogue
Precisez svp
Salut
#5 Tue 04 June 2002 19:22
- Laure Barral
- Invité
Re: Sélection SQL
Cette question m'interesse egalement
#6 Thu 12 June 2003 09:36
- Mrossi
- Invité
Re: Sélection SQL
Bonjour,
Je sais qu'il existe dans MapInfo la possibilite de selectionner par requete les objet graphique en fonction de leur type (ligne, point, etc ...)
Mais je ne me souviens plus des fonctions.
Quelqu'un pourrais t-il me rafraichir la memoire ?
Cordialement
#7 Wed 18 June 2003 10:29
- Rbizet
- Invité
Re: Sélection SQL
Potassez l'excellent document de Sebastien Roddier (Mapbasic_sql_A4.pdf)
disponible sur le non moins parfait site de Jacques Paris a la page :
http://www.paris-pc-gis.com/externes/Fi … ources.htm .
Cartographiquement votre...
#8 Thu 19 June 2003 09:56
- Marc ROSSI
- Invité
Re: Sélection SQL
bonjour,
En conclusion sur ma question un document particulierement complet sur le site de Jacques Paris:
http://www.paris-pc-gis.com/externes/ex … ic_sql.htm
geographiquement votre
#9 Wed 17 March 2004 14:39
- D Hilpipre
- Invité
Re: Sélection SQL
Bonjour,
Petit probleme de selection SQL : je dispose de 2 table. TAB1 contient les colonnes A et B, TAB2 contient les colonnes C,D,E,F.
En effectuant une jointure comme suit :
Select col1, col4 from TAB1, TAB2 where TAB1.A=TAB2.C
je recupere une requete avec le champ A de TAB1 et le champ F de TAB2 (j'attendais plutot le champ D de TAB2 mais bon, il en est ainsi). En prefixant mes nom de champs comme suit :
select TAB1.col1, TAB2.col2 from TAB1, TAB2 where TAB1.A=TAB2.C
je recupere le champ A de TAB1 et le champ D de TAB2.
Le probleme est que je souhaite me passer des prefixe, le nom des mes tables etant particumierement long.
Ma question est la suivante :
existe-il un moyen d'utiliser un alias de nom de table plutot que le nom de la table?
Il est possible d'utiliser col1, col2, etc..a la place du nom des colonnes. A-t-on l'equivalent pour le nom des tables ?
Merci
#10 Wed 17 March 2004 14:39
- Pierre Coroller
- Invité
Re: Sélection SQL
Tu peux choisir l'intitule des colonnes de ta selection en l'indiquant entre guillements :
Ainsi, ta requete devient :
select TAB1.A "toto" , TAB2.D "tata" from TAB1, TAB2 where TAB1.A=TAB2.C
Si tu veux conserver l'origine de la table pour les colonnes resultat, tu peux le faire en l'indiquant dans l'alias que tu choisis.
Ex : Remplacer TAB1 par T1 et TAB2 par T2.
Ta requete devient
select TAB1.A T1.toto , TAB2.D T2.tata from TAB1, TAB2 where TAB1.A=TAB2.C
Cordialement
#11 Wed 17 March 2004 16:07
- Mikael LEFERFORT
- Invité
Re: Sélection SQL
existe-il un moyen d'utiliser un alias de nom de table plutot que le nom de la table?
Oui, tout simplement en ouvrant la table comme ceci : open table ma_table as mon_alias
Il est possible d'utiliser col1, col2, etc..a la place du nom des colonnes. A-t-on l'equivalent pour le nom des tables ?
Oui, par la syntaxe suivante : nom_table.COL(num_colonne)
#12 Wed 07 April 2004 17:13
- Francoisviricelle
- Invité
Re: Sélection SQL
Salut,
j'ai une table qui contient les zones POS de ma commune et une table qui contient le parcellaire.
je voudrais connaitre la requete me permettant de trouver la surface de la parcelle ab0460 qui est situee dans une zone Na precise.
j'ai essaye plusieurs requetes en selectionnant ma zone Na et ma parcelle, puis sans rien selectionne...et je n'ai aucun resultat.
si vous avez une petite syntaxe a m'offrir???
merci et bonne journee
#13 Wed 07 April 2004 17:13
- Christophe Barbier
- Invité
Re: Sélection SQL
La requete SQL suivante devrait faire l'affaire:
(a taper dans la fenetre MapBasic, puis 'enter' sur la ligne)
Select Area(obj, "sq m") "Surface m²" From TableParcelle Where NumParcelle= ab0460 And Obj Within (Select Obj From TablePOS Where ZonePos= "Na")
N'oubliez pas de remplacer les noms de table et de champs par les votres.
#14 Wed 07 April 2004 17:13
- Infosig Net
- Invité
Re: Sélection SQL
Bonjour,
Pour connaitre la superficie d'une parcelle sous un type de zonage PLU, j'utilise la methode suivante :
Il faut en fait au prealable, decouper vos parcelles par rapport a votre POS :
. Selectionner les parcelles, pour les definir en objet cible
. Selectionner vos zones POS
. Decouper
. Mettez a jour eventuellement le champ superficie de vos nouvelles parcelles.
. Ensuite, vous pourrez faire votre requete qui incluera en criteres :
parcelles.obj within zone.obj and zone.type="Na" and parcelle.num="ab0406" ;
en poussant cette requete,vous pourrez ainsi obtenir pour chaque parcelle la superficie qui la concerne par type de zone ex: ab0406, Na, 3500m2 ; ab0406,UB, 2500m2...
(version de MI utiliser pour l'essai : 7.5 )
#15 Mon 04 October 2004 11:15
- Raoul Delescluse
- Invité
Re: Sélection SQL
Bonjour a tous,
Je travaille sur une table avec les adresses de chacun des 450 eleves de mon Lycee et je n'arrive pas a batir correctement une selection
a) comment calculer le nombre d'eleves par commune ?
b) comment creer ensuite l'analyse thematique qui permet de visualiser ce nombre d'eleves par commune ?
Merci de votre aide !
#16 Mon 04 October 2004 11:15
- Christophe Barbier
- Invité
Re: Sélection SQL
Bonjour,
a- La requete suivante vous donne le nombre d'eleves par commune:
Select NomCommune, Count(*) "Nbre eleves" From TableEleves Group By NomCommune Into cptes_EleveCommune
...ou TableEleves serait le nom de votre table et NomCommune serait le nom de champ contenant le nom des communes.
b- Ensuite, il faut faire une analyse thematique par classes sur votre tables des communes en faisant une jointure avec le resultat de votre selection de (a).
Dans mon exemple, ceci peut-etre fait grace au nom de la commune.
Mais si vous avez les codes postaux ou les n° d'Insee, c'est beaucoup mieux.
Cordialement
#17 Tue 15 February 2005 08:28
- Nadinadou
- Invité
Re: Sélection SQL
BONJOUR,
je cherche a faire une selection sql dans MAP INFO pour calculer le nombre d'abreuvoir par lineaire de segments.
J'ai 2 tables : abreuvoir, segment
jointure : abreuvoir.codesegment = segment.codesegment
je souhaite les colonnes : abreuvoir.codesegment, sum(abreuvoir.abreuvoir)/(segment.lineaire) comme COL2
regroupe par abreuvoir.codesegment
Pour faire une requete SQL dans ACCESS et obtenir ce resultat, OK pas de pb.
Pour faire cette meme requete dans MAP INFO j'ai des pb de syntaxe (ecrire une somme puis une division). Autrement il me faut faire une selection en 2 etapes, soit 2 requetes, et alors je n'arrive pas a ouvrir le document qui fait appel a ces selection (car j'ai une selection a partir d'une autre selection !)
Quelqu'un connait le pb?
merci,
#18 Wed 22 February 2006 14:00
- loic.b
- Participant occasionnel
- Date d'inscription: 2 Feb 2006
- Messages: 25
Re: Sélection SQL
J'aurai voulu creer une requete SQL qui me renvoie des information(qui se trouve dans une autr etable) sur un polygone déjà selectionné dans ma carte. j'ai donc rentré "selection" dans les tables à utilisé, et dans ma requete, la colonne "selection.insee". Malheureusement, quand je verifie ma requete, il me met un truc du genre "variable ou champ non defini".
Si quelqu'un à une solution ou a la certitude qu'il est impossible de faire une requete qui utilise la selection active, merci de me faire par de votre avis
cordialement
Hors ligne
#19 Thu 23 February 2006 08:54
Re: Sélection SQL
La sélection active est accessible dans la fenêtre Sélection SQL : il suffit de sélectionner la table Queryn dans la liste des tables. Les champs sont alors accessibles sous la forme Queryn.insee par exemple.
Dernière modification par SIGEAL (Thu 23 February 2006 09:12)
Christophe Damour (SIGéal)
Hors ligne