Vous n'êtes pas identifié(e).
Pages : 1
mon problème que j'ai pas des erreurs la requête s’exécute dans quelques secondes sans faire l'insertion dans le tableay Links !!
merci ça marche mais juste je comprends pas comment je peux verifier que le boucle la ligne lg sera fixe jusqu'a la fin de code
select name,lead (the_geom) over (order by gid) from roadbrest into lg; fixer un ligne de la table
tabfraction := (select array_agg(floatfraction order by floatfraction asc) from interobject where "the_geomRoad"=lg ) ; tableau des fraction de ce ligne en ordre croissant
while i <= array_length(tabfraction,1) --boucle sur le tableau
loop
insert into Links (geomline,source,destination)
values(ST_line_substring(lg,tabfraction[i],tabfraction[i+1]),ST_Line_Interpolate_Point(lg,tabfraction[i]),ST_Line_Interpolate_Point(lg,tabfraction[i+1]));-- insertion des valeurs de tableau dans un autre table
i:=i+2;
end loop;
pour array_agg j'ai essayer de faire ce code la
set tabfraction = (select array_agg(fractionligne1 order by fractionligne1 asc) from intersectionposifloat2 where ligne1=lg ) ;
mais il y 'a un erreur de syntaxe dans l'affectation de tabfraction à la requête?
je suis désolé mais vraiment je besoin d'un exemple pour utiliser array_agg pour retourner un tableau.
Ainsi pour les boucle je trouve pas vraiment une requête peur remplacer les boucles !!
Bonjour
Je veux juste savoire comment attrivuer le resultat d'une requète select dans un tableau comme l'exmple:
create or replace function linksegment() returns setof geometry as $$
declare
lg geometry(linestring);
tabfraction double precision array; --tableau des réelles
i integer;
begin
for lg in (select the_geom from roadbrest)
loop
select into tabfraction fractionligne1 from intersectionposifloat2 where ligne1=lg or ligne2=lg order by fractionligne1 asc ; -- remplir tableau tabfraction par la requète select en ordre croissant !!!
while i <= array_length(tabfraction)
loop
insert into linksegments(point1,point2) values(tabfraction[i],tabfraction[i+1]);
end loop;
return next lg;
end loop ;
end
$$
LANGUAGE 'plpgsql';
select linksegment()
Le problème est dans ce ligne ou je veux remplir tabfraction le tableau des réelles par la resultat de requète select
select into tabfraction fractionligne1 from intersectionposifloat2 where ligne1=lg or ligne2=lg order by fractionligne1 asc ;
mais voici l'erreur qu'il l'affiche : ERREUR: la valeur du tableau doit commencer avec « { » ou avec l'information de la dimension. merci
merci c'est résolu
merci mais dans ce cas comment on peut comparer les valeurs de deux lignes de même tableau ?
Bonjour j'ai essayer de faire une sorte de comparaison entre deux lignes dans le même tableau. Voici ma requête pour chercher les intersections des lignes .
create table interpostgis
as select the_geom as a, the_geom as b,ST_Intersection("roadbrest".a,b) from roadbrest where ST_Intersects(a,b)=true;
Cette requête retourne cette erreur : la colonne roadbrest.a n'existe pas
Comme si il comprend pas les alias a et b ??
merci ça marcha bien maintenant
Bonjour
Je veux savoir s'il vous plait comment une fonstion en pgsql peut retourner un tableau et il maffiche un erreur
create or replace function segmenter() returns setof float[] as $$ -- type de retour de la fonction est float[]
declare
lg geometry(LineString);
PointForLinge geometry(Point) [] ;
tabfloat float array;
i integer;
m integer;
pt geometry(point);
begin
for lg in select the_geom from roadbrest
Loop
for pt in (select the_geom from projectionfinal where "the_geomRoad"=lg )
loop
m:=0;
PointForLinge[m]:=pt;
m:=m+1;
END loop;
if array_length(PointForLinge,1)> 0 then
for i in 0 .. array_length(PointForLinge,1)
LOOP
tabfloat[i]:=ST_Line_Locate_Point(lg,PointForLinge[i]) ;-- c'est le tableau de float que je veux le retourner
End LOOp
end if;
END LOOP;
return tabfloat; --ici le pbl
end
$$
LANGUAGE 'plpgsql';
et voici l'erreur que je le trouve
RETURN ne peut pas avoir un paramètre dans une fonction renvoyant un ensemble
LINE 30: return tabfloat;
merci de l'aide
oui rien à changé avec les parenthèses, le meme message d'erreur!!
Toujours pareil avec les parenthèses
Bonjour
J'ai essayer d’écrire une requête dans postgresql sous la forme suivante:
'select nom,prenom from personne where age in select id from age'
il renvoie une erreur "l'opérateur de comparaison de ligne ne doit pas renvoyer un ensemble "
alors comment je peut écrire in select dans le clause where en postgresql
merci d'avance
Pages : 1