Re: [OSM-dev-fr] Question noob postgis
Le 22/02/2012 22:33, sly (sylvain letuffe) a écrit : Tu as déjà pratiqué SQL dans un contexte non GIS ou pas encore ? J'aurais du mettre 'question noob sql' en sujet ;). Merci ! ___ dev-fr mailing list dev-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] Question noob postgis
Le mercredi 22 février 2012 21:54:48, yvecai a écrit : > J'ai pris la grande décision de me frotter un peu à postgis, Tu ne le regrettera pas ! > mais j'ai > un peu de mal en sql, alors c'est l'occasion d'animer un peu cette liste. Ouais ! ça motivera peut-être certains (dont moi ;-) ) à se bouger et à venir ici plutôt que d'encombrer talk-fr > Dans une base 'osm2pgsql', je recherche les relations qui partagent un > bout de chemin avec, disons la relation 1347356. > Je n'arrive pas à comprendre comment faire fonctionner les fonctions de > comparaison. > > SELECT a.osm_id, b.osm_id > FROM planet_osm_line a, planet_osm_line b > WHERE ST_overlaps(a.way,select b.way where osm_id=-1347356); > > ERREUR: erreur de syntaxe sur ou près de « select » > LIGNE 3 : WHERE ST_overlaps(a.way,select b.way where osm_id=-1347356); > > > Quelqu'un pour me mettre le pied à l'étrier? Attention, je ne me veux ni condescendant, ni exaspérant, ni malpoli, c'est juste pour adapter mes réponses à ton niveau actuel : Tu as déjà pratiqué SQL dans un contexte non GIS ou pas encore ? > WHERE ST_overlaps(a.way,select b.way where osm_id=-1347356); tu ne peux avoir 2 "where" la bonne syntaxe, si on remet les ( ) au bon endroit est : where ST_overlaps(a.way,select b.way) and (osm_id=-1347356); Au delà de la syntaxe que je viens de corriger, il faut maintenant voir si chaque champ est bien défini et bien unique si tu re-tentes ta requête, il devrait te dire osm_id est ambigue car il ne sait pas de quel table tu veux a ou b Donc : where ST_overlaps(a.way,select b.way) and (b.osm_id=-1347356); Je sais plus pourquoi, mais je crois que j'utiliserais st_intersects plutôt que st_overlaps Et au cas où tu ne connaisses pas, la bible : http://www.postgis.org/docs/reference.html -- sly (sylvain letuffe) ___ dev-fr mailing list dev-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] Question noob postgis
Le 22/02/2012 22:24, Frédéric Rodrigo a écrit : On 22/02/2012 21:54, yvecai wrote: J'ai pris la grande décision de me frotter un peu à postgis, mais j'ai un peu de mal en sql, alors c'est l'occasion d'animer un peu cette liste. Dans une base 'osm2pgsql', je recherche les relations qui partagent un bout de chemin avec, disons la relation 1347356. Je n'arrive pas à comprendre comment faire fonctionner les fonctions de comparaison. SELECT a.osm_id, b.osm_id FROM planet_osm_line a, planet_osm_line b WHERE ST_overlaps(a.way,select b.way where osm_id=-1347356); ERREUR: erreur de syntaxe sur ou près de « select » LIGNE 3 : WHERE ST_overlaps(a.way,select b.way where osm_id=-1347356); Ton sql n'est pas bien structuré : SELECT a.osm_id, b.osm_id FROM planet_osm_line AS a, planet_osm_line AS b WHERE b.osm_id=-1347356 AND ST_overlaps(a.way, b.way) ; Ou en plus jolie : SELECT a.osm_id, b.osm_id FROM planet_osm_line AS a JOIN planet_osm_line AS b ON ST_overlaps(a.way, b.way) WHERE b.osm_id=-1347356 ; ___ dev-fr mailing list dev-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/dev-fr Entre-temps j'avais trouvé: SELECT a.name, a.osm_id FROM planet_osm_line a, (select way from planet_osm_line where osm_id=-1354395) as b WHERE ST_intersects(a.way,b.way); Mais bien moins joli, je te l'accorde ! Yves ___ dev-fr mailing list dev-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] Question noob postgis
On 22/02/2012 21:54, yvecai wrote: J'ai pris la grande décision de me frotter un peu à postgis, mais j'ai un peu de mal en sql, alors c'est l'occasion d'animer un peu cette liste. Dans une base 'osm2pgsql', je recherche les relations qui partagent un bout de chemin avec, disons la relation 1347356. Je n'arrive pas à comprendre comment faire fonctionner les fonctions de comparaison. SELECT a.osm_id, b.osm_id FROM planet_osm_line a, planet_osm_line b WHERE ST_overlaps(a.way,select b.way where osm_id=-1347356); ERREUR: erreur de syntaxe sur ou près de « select » LIGNE 3 : WHERE ST_overlaps(a.way,select b.way where osm_id=-1347356); Ton sql n'est pas bien structuré : SELECT a.osm_id, b.osm_id FROM planet_osm_line AS a, planet_osm_line AS b WHERE b.osm_id=-1347356 AND ST_overlaps(a.way, b.way) ; Ou en plus jolie : SELECT a.osm_id, b.osm_id FROM planet_osm_line AS a JOIN planet_osm_line AS b ON ST_overlaps(a.way, b.way) WHERE b.osm_id=-1347356 ; ___ dev-fr mailing list dev-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/dev-fr
[OSM-dev-fr] Question noob postgis
J'ai pris la grande décision de me frotter un peu à postgis, mais j'ai un peu de mal en sql, alors c'est l'occasion d'animer un peu cette liste. Dans une base 'osm2pgsql', je recherche les relations qui partagent un bout de chemin avec, disons la relation 1347356. Je n'arrive pas à comprendre comment faire fonctionner les fonctions de comparaison. SELECT a.osm_id, b.osm_id FROM planet_osm_line a, planet_osm_line b WHERE ST_overlaps(a.way,select b.way where osm_id=-1347356); ERREUR: erreur de syntaxe sur ou près de « select » LIGNE 3 : WHERE ST_overlaps(a.way,select b.way where osm_id=-1347356); Quelqu'un pour me mettre le pied à l'étrier? Yves ___ dev-fr mailing list dev-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/dev-fr