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