#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@ equipement.gouv.fr