Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1233
Site web

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

 

Pied de page des forums

Powered by FluxBB