#1 Mon 04 March 2013 16:06
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
[MAPSERVER] Détection du dernier enregistrement reçu
Bonjour
dans mon mapfile je génère une image à partir d'une liste de points récupérés en interrogeant un BD postgresql
de la manière suivante :
connection "host=%HOST% dbname=%DBNAME%"
data coord from (select date,coord,num from table where rectangle('%LONMIN%','%LATMIN%','%LONMAX%','%LATMAX%',coord) and date between '%BEGINDATE%' and '%ENDDATE%') as new_table using unique num"
je souhaiterais détecter l'enregistrement le plus récent de la liste retournée par la requête pour lui appliquer un traitement particulier afin de différencier ce dernier point des autres en lui affectant par exemple une couleur différente ;
il doit s'agir normalement du dernier enregistrement de la liste
y-a-t'il une solution simple à ce problème ?
merci beaucoup
jean-Marie
Hors ligne
#2 Mon 04 March 2013 16:24
Re: [MAPSERVER] Détection du dernier enregistrement reçu
Bonjour,
il me semble que votre requête ne comporte pas de clause "ORDER BY", il est donc difficile de dire que l'élément le plus récent est le dernier de la liste.
Vous pouvez résoudre ce problème en utilisant les fonctions "window" disponibles depuis PostgreSQL 8.4 et calculer le rang de chacun de vos enregistrements. Ensuite vous traitez différentiellement l'enregistrement de rang 1.
La requête devrait ressembler à ceci :
Code:
select rank() over(order by date DESC) as rang, date,coord,num from table where rectangle('%LONMIN%','%LATMIN%','%LONMAX%','%LATMAX%',coord) and date between '%BEGINDATE%' and '%ENDDATE%'
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#3 Mon 04 March 2013 17:12
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
Re: [MAPSERVER] Détection du dernier enregistrement reçu
Bonjour
merci bien pour votre information
le dernier de la liste est bien le plus récent ; il est donc nécessaire de faire un order by pour qu'il devienne le 1er
afin de lui associer le rang 1 ;
j'espère simplement que ce n'est pas pénalisant en temps d’exécution lorsque l'on a un gros volume de données
à tester
Jean-Marie
Hors ligne