[Résolu] Requête pour âge à différentes dates

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur: Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.

[Résolu] Requête pour âge à différentes dates

Messagepar René-Pierre » 04 Avr 2009 00:22

Bonjour,

J'ai construit une base de données pour les membres de notre club, qui contient une table avec les données de chaque membre. J'ai fait une requête qui permet de calculer l'âge de chaque membre pour un jour précis - j'avais trouvé comment faire sur ce forum. Voici ma requête:

Code : Tout sélectionner   AgrandirRéduire
SELECT "nom", "prenom", "naissance",
CASE
WHEN Month('2009-04-01') < month("naissance") or ( Month('2009-04-01') = Month("naissance") and day('2009-04-01')<day("naissance") )   THEN
      CAST((year('2009-04-01') - year("naissance") -1) AS VARCHAR) || ' ans'
ELSE
      CAST((year('2009-04-01') - year("naissance") ) AS VARCHAR) || ' ans'
END as "age"
from "liste-membres"


Cette requête fonctionne bien, mais je dois changer la date de la formule à chaque nouvelle requête. J'ai besoin de calculer l'âge à chaque session, pour chaque examen ( 2 ou 3 examens aux 10 semaines environ), car les exigences de passage changent selon l'âge. Existe-t-il un moyen que je n'aurais pas à retaper la date 5 fois ?

Le résultat de la requête est imprimé sur des étiquettes qu'on colle sur les feuilles d'examen.

Merci de m'aider.
Dernière édition par Dans quelle étagère le 24 Juil 2009 14:15, édité 3 fois.
Raison: Balisage ; La balise s'insère dans le premier message du fil
René-Pierre

OpenOffice 3.2, SRB 1.2
Windows XP, SP 3
René-Pierre
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 03 Avr 2009 23:57

Re: Requête pour âge à différentes dates

Messagepar jeanmimi » 04 Avr 2009 08:31

Bonjour et bienvenue dans ce forum,
Je ne sais pas si tu as recherché dans les exemples présents dans le forum, mais tu en as qui te montrent comment, comme dans l'exemple joint.
Tu peux aussi joindre ton fichier pour faciliter l'aide à t'apporter.
Pièces jointes
Base avec calcul de l'âge.odb
(13.07 Kio) Téléchargé 273 fois
Dernière édition par jeanmimi le 04 Avr 2009 18:47, édité 1 fois.
LibreOffice Version : Version: 6.3.3.2 (x64) (4 novembre 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15063
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: Requête pour âge à différentes dates

Messagepar Dominique Pautrel » 04 Avr 2009 18:19

Bonjour,

D'après ce que j'en vois dans cette section :
http://wiki.services.openoffice.org/wik ... te.2FHeure

Il y aurait soit CURRENT_DATE, soit CURRENT_TIMESTAMP, ou éventuellement Now(), qui pourrait remplacer la chaine '2009-04-01', dans l'exemple, pour se référer toujours à "Aujourd'hui".

jeanmimi a écrit:Tu peux aussi joindre ton fichier pour faciliter l'aide à t'apporter.
Si ces idées ne conviennent pas, bien sur c'est la bonne démarche...
OpenOffice.org 3.2 sous Debian Squeeze/Sid et OpenOffice.org 3.2 sous Windows XP SP3.
Le logiciel libre représente selon moi une grande famille où l'union fait la force ...
Battons les escrocs à leur petit jeu
Avatar de l’utilisateur
Dominique Pautrel
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 210
Inscrit le : 02 Déc 2008 22:22
Localisation : Laval, Pays de Loire

Re: Requête pour âge à différentes dates

Messagepar René-Pierre » 06 Avr 2009 15:18

Bonjour,

Merci d'avoir répondu si rapidement.

Le fichier joint par Jeanmimi ressemble beaucoup à la base que j'ai utilisée à l'automne pour construire ma propre base. La requête age (la première) est celle que j'utilisais au début pour calculer l'âge des membres. Puis je l'ai modifée pour me faciliter la vie.

Ce que je dois faire, c'est obtenir l'âge des membres à des dates fixes. Par exemple, cette semaine, c'est la période d'inscription du club. Après, je dois fournir à la commission régionale une liste des membres actifs avec leur âge au 1 janvier 2009. Je dois faire la même liste pour l'association nationale avec l'âge des membres au 1 septembre 2008. Lors de la session d'examens, je dois fournir l'âge des membres le jour de l'examen (qui n'est pas toujours la date à laquelle je prépare les copies des examens). Ainsi, dans la formule de requête, je change CURRENT_DATE pour insérer plutôt la date à laquelle j'ai besoin de l'âge.

Ce que j'aimerais obtenir, c'est une façon de demander à la requête "donne-moi l'âge le 1 janvier 2009" ou "donne-moi l'âge le 1 septembre 2008" sans avoir à remplacer le CURRENT_DATE de la formule 5 fois avec la bonne date. Les premières fois, on a essayé en changeant la date de l'ordinateur avant de de lancer la requête, mais Windows ne semble pas apprécié ça, on a eu des problèmes.

Est-ce possible ?

Merci encore
René-Pierre

OpenOffice 3.2, SRB 1.2
Windows XP, SP 3
René-Pierre
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 03 Avr 2009 23:57

Re: Requête pour âge à différentes dates

Messagepar jeanmimi » 06 Avr 2009 17:23

Pour tester, ce serait sans doute plus facile avec ton fichier.
Je pense à une boite de dialogue sur le critère CURRENT_DATE par exemple.
LibreOffice Version : Version: 6.3.3.2 (x64) (4 novembre 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15063
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: Requête pour âge à différentes dates

Messagepar René-Pierre » 07 Avr 2009 04:03

Bonsoir,

voici mon fichier simplifié, pour tester.

Merci pour votre aide
René-Pierre

OpenOffice 3.2, SRB 1.2
Windows XP, SP 3
René-Pierre
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 03 Avr 2009 23:57

Re: Requête pour âge à différentes dates

Messagepar Oukcha » 07 Avr 2009 06:46

Bonjour et bienvenue,

Pour joindre un exemple de fichier avec notre service Ci-Joint (lien en bas de la page lors de la rédaction du message), veuillez consulter : viewtopic.php?t=10246

Cordialement, Oukcha
                                        
:arrow: A lire avant tout ! Image
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
 
Message(s) : 3102
Inscrit le : 06 Oct 2008 09:03

Re: Requête pour âge à différentes dates

Messagepar Pierre-Yves Samyn » 07 Avr 2009 15:47

Bonjour

René-Pierre a écrit:Ce que j'aimerais obtenir, c'est une façon de demander à la requête "donne-moi l'âge le 1 janvier 2009" ou "donne-moi l'âge le 1 septembre 2008" sans avoir à remplacer le CURRENT_DATE de la formule 5 fois avec la bonne date.


Le plus simple me semble être de créer une table spécifique (un champ clé primaire en auto-valeur et un champ date). Il suffira de saisir la date dans cette table.
Ensuite on ajoute cette table à la requête et on a deux possibilités :
- soit on ajoute la liaison sur entre les champs date
- soit ne relie pas les tables mais on utilise comme critère de sélection :

Code : Tout sélectionner   AgrandirRéduire
IN ( SELECT [param] FROM [Param] )


Nota : dans cet exemple la table paramètre et le champ date "paramètre" se nomment Param
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42

Re: Requête pour âge à différentes dates

Messagepar René-Pierre » 07 Avr 2009 18:45

Bonjour,

Une panne de courant est survenue alors que je transmettais mon fichier hier soir, je vois que rien n'a passé. Mon fichier a été corrompu et je dois le refaire, alors voici une ébauche de ma base. Une fois le fichier refait - j'en a besoin pour les inscriptions ce soir - j'essairai les dernières suggestions.

Merci
Pièces jointes
pratique.odb
(4.12 Kio) Téléchargé 126 fois
René-Pierre

OpenOffice 3.2, SRB 1.2
Windows XP, SP 3
René-Pierre
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 03 Avr 2009 23:57

Re: Requête pour âge à différentes dates

Messagepar jeanmimi » 08 Avr 2009 10:03

J'ai cherché à appliquer les suggestions de Pierre-Yves, mais j'ai mal dû m'y prendre car je n'arrive pas à mieux que ce que j'avais testé auparavant.
Pourtant, la solution ne doit pas être très loin.
Pièces jointes
Base avec Requête DATEDIFF.odb
(4.93 Kio) Téléchargé 127 fois
LibreOffice Version : Version: 6.3.3.2 (x64) (4 novembre 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15063
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: Requête pour âge à différentes dates

Messagepar Pierre-Yves Samyn » 08 Avr 2009 10:34

Un exemple donc :

Code : Tout sélectionner   AgrandirRéduire
SELECT "nom", "prenom", "tel", "ID-membre", "telcode",  "naissance", 'aura' as " " , "date" as "le",

CASE
WHEN Month("date") < month("naissance") or ( Month("date") = Month("naissance") and day("date")<day("naissance") )   THEN
      CAST((year("date") - year("naissance") -1) AS VARCHAR) || ' ans'
ELSE
      CAST((year("date") - year("naissance") ) AS VARCHAR) || ' ans'
END as "age"

from "membres", "date"


Rappel : avec cette solution on n'utilise plus de paramètre. Ce dernier est saisi dans la table...
Pièces jointes
Base avec Requête DATEDIFF.odb
(8.08 Kio) Téléchargé 222 fois
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42

[Résolu] Re: Requête pour âge à différentes dates

Messagepar René-Pierre » 09 Avr 2009 04:11

Bonsoir,

j'ai essayé la solution de Pierre-Yves et tout fonctionne bien. Ce soir, après les inscriptions, mon fichier était à jour, alors j'ai essayé avec la liste des 250 membres, mes 2 rapports sont prèts à être signés et postés. C'est tellement plus rapide !

Encore merci !
René-Pierre

OpenOffice 3.2, SRB 1.2
Windows XP, SP 3
René-Pierre
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 03 Avr 2009 23:57


Retour vers Base de données

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)