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 06 December 2004 11:32

Champ Sébastien
Invité

Lundi, je suis mal reveille

Je reprends depuis le debut :

J'ai une table observation avec 3 champs:
date, espece, observateur
Je voudrais connaitre le nom de l'observateur pour la derniere observation
pour chaque espece.
Il ne s'agit donc pas simplement de la date de la derniere observation.

Je veux comme resultat une table avec une colonne espece, la derniere date
d'observation et l'observateur de cette derniere observation.
Je veux autant de ligne que j'ai d'espece.

Je ne vois pas comment faire.
Si j'aggrege les donnees pour obtenir la derniere date, je ne peux pas
recuperer le nom de l'observateur. Si j'ajoute l'observateur, la requete
aggrege aussi les observateurs et me donne donc une date pour chaque
observateur.
Est ce que quelqu'un peut me depatouiller. Merci
CHAMP Sebastien

Champ Sebastien
Charge de mission Cartographie & Base de Donnees
Reseau des reserves naturelles de Franche Comte

 

#2 Mon 06 December 2004 13:27

Annick Lagnion
Invité

Re: Lundi, je suis mal reveille

tu crees une table avec la structure qui t'interesses, (extrait_table), qui
est vide au depart.
puis:

select * from table where espece= espece1 order by DATE desc into essai
fetch first from essai
insert into extrait_table values essai.espece,essai.date,essai.observateur

select * from table where espece= espece2 order by date desc into essai
fetch first from essai
insert into extrait_table values essai.espece, essai.date,essai.observateur

etc..

si tu as mapbasic, il n'y a qu'a ecrire une boucle sur la liste des especes,
sinon tu fais un .wor en prevoyant tous les cas.

 

#3 Mon 06 December 2004 15:50

Denis Jouin
Invité

Re: Lundi, je suis mal reveille

De: Denis Jouin
Bonjour,

vous pouvez utiliser 2 requetes successives, la premiere qui prepare le fichier dans le bon ordre (espece, date) :

Select * from observation order by espece , date desc

puis, sur le resultat precedent, la seconde requete recupere la premiere ligne pour chaque espece :

select * from selection group by espece

Vous obtiendrez alors le resultat souhaite.

Cela fonctionne bien que les specifications de la syntaxe group by ne soient pas explicites. par contre la premiere requete doit necessairement effectuer le tri sur les 2 colonnes espece et date .

Cordialement

Denis Jouin

 

#4 Mon 06 December 2004 18:52

Alain Ferraton
Invité

Re: Lundi, je suis mal reveille

Bonjour,

On peut egalement tenter une aggregation sur critere de rupture (grouper
par) espece sur une nouvelle table sur laquelle on aura fait un tri DESC
sur les dates
donc
1) Faire une tri descendant sur les DATES et enregistrer sous une nouvelle
table
2) faire une selection SQL sur la table TRIER en utilisant juste le grouper
par ESPECE

A+

FERRATON Alain
alain.ferraton@texte-a-enlever.equipement.gouv.fr

 

Pied de page des forums

Powered by FluxBB