Le 21/04/06, julien cochennec<[EMAIL PROTECTED]> a écrit :
> bonjour, j'ai une base de données qui sert à évaluer certains savoirs
> qu'ont acquis mes élèves.
> chaque évaluation (devoir) contient un certain nombre de savoirs
> (numérotés par ordre d'apparition chronologique) et chaque élève, pour
> chaque savoir, a un résultat (acquis, non acquis, etc...)
> j'ai une table élèves, une table savoirs, une table évaluation, une
> table détails qui associe une évaluation à plusieurs savoirs et une
> table résultats.
> J'évalue ces savoirs plusieurs fois pour chaque élève, donc je voudrais
> pouvoir extraire le dernier résultat pour chaque élève dans chaque savoir.
> les savoirs sont classés chronologiquement grâce à une période et un
> indice (deux champs de la table évaluation) et un numéro (un champ dans
> la table détails).
>
> voici mes deux problèmes :
> 1) je veux filtrer un seul savoir, un seul élève et obtenir le dernier
> résultat de cet élève (la requête doit afficher uniquement ce résultat),
> comment faire?

Bonjour,
sans vraiment pouvoir donner l'exemple pour ta base, voici une requête
qui limite le résultat à la date_exam la plus récente (sous base
intégrée hsqldb):

SELECT "nom", "date_exam" FROM "T_ELEVES", "T_EVALUATION"
WHERE "nom" = 'le nom recherché' AND "T_ELEVES"."id" =
"T_EVALUATION"."ref_eleve"
ORDER BY "date_exam" DESC
TOP 1
> 2) je veux obtenir comme résultat de requête, pour tous les savoirs et
> tous les élèves, le dernier résultat (période la plus élevée, indice le
> plus élevé, numéro le plus élevé).comment faire?

je ne suis pas sûr d'avoir bien saisi, mais en fait tu n'utilises pas
de champs de type DATE pour classer chronologiquement, mais période +
indice + numéro ?
la clause de tri devrait alors être ainsi :
SELECT .....
ORDER BY "période" DESC, "indice" DESC, "numéro" DESC
TOP 1

>
> autre question plus simple: j'ai essayé d'utiliser max, min, nombre dans
> les requêtes en ébauche (interface graphique) et il me jette
> systématiquement, est-ce un problème d'index? ces trois fonctions me
> donne un message d'erreur avec des nombres, des dates, des chaînes de
> caractère, je comprends pas ou est le problème.

les exemples que je te donne foncionne en mode "requête sql directe".
Tu peux consulter le how-to :
http://fr.openoffice.org/Documentation/How-to/Bdd/FAQ_SQL_direct.odt
pour en savoir plus.
Les fonctions que tu cites sont des fonctions d'agrégation et sont un
peu pointilleuses sur certains détails, regardes dans le how-to.

>
> dernière question : sous access, il existe une fonction last, assez
> pratique, existe-t-elle aussi sous hsqldb? j'ai essayé, il a accepté la
> syntaxe mais l'éxécution de la requête a échoué.
>

pour des détails sur les clauses de limitations du nombre de résultats
dans une requête, tu peux consulter la doc HSQLDB disponible ici :
http://hsqldb.org/web/hsqlDocsFrame.html
(partie sql syntax)

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à