Message posté par : T. Rossini
----------------------------------------
Après relecture :
Le résultat que vous obtenez est dû à
la condition de jointure supplémentaire de la seconde proposition,
car event_id vaut 0 pour les points intermédiaires, ce qui
les écarte de la jointure.
Donc troisieme proposition : on enleve cette condtion de jointure,
et on ne fait juste que grouper avec le event_id de f, qui ne
vaudra jamais 0.
-----------------
Code :
WITH f as (
--array_agg est une fonction d'agrégat qui
--génére un tableau de l'ensemble donné en argument
SELECT
event_id,
array_agg(trac_id ORDER BY trac_id) bounds
FROM
t
--on ne veut recuperer que le premier et le dernier
--trac_id de chaque event
WHERE
event_id <> 0
GROUP BY
event_id
--On ne veut que des tableaux ayant deux élements
HAVING
COUNT(*) = 2
)
SELECT
st_makeline(
st_makepoint(gps_lat_start, gps_long_start)
ORDER BY trac_id) line
FROM
f
JOIN
t
ON t.trac_id BETWEEN bounds[1] AND bounds[2]
GROUP BY
f.event_id
-----------------
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=321780#p321780
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net