Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/12/2010, 20h16   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 18
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 18
Points : 2
Points : 2
Par défaut Calcul de l'âge et insertion dans une colonne

Bonsoir,
je me suis baladé sur de nombreux forums et je n'ai toujours pas trouvé de solution à mon problème étant débutant sur access.
Voici donc mon problème, j'ai créé 2 tables, une Participant avec la date de naissance, le nom et la catégorie.
La deuxième table est celle des catégories (1.2.3.4... en fonction de l'âge)
Je voudrais donc par une requête mettre à jour la table participant, en mettant à jour sa colonne catégorie en fonction de l'âge des licenciés.
J'ai donc pensé tout d'abord créer une colonne âge dans la table licencié. Dans un second y insérer l'âge des participants pour après faire une fonction si entre la table participant et catégorie. (si l'age est de .... la catégorie qui correspond est ...)
J'ai trouvé comment calculer l'âge : Select(Year(Date()-datenaiss-1)-year(0)) as Age From Participant
Mais après je n'arrive pas à l'insérer dans la colonne âge que j'ai créé plutôt.
J'ai essayé avec les fonctions update et insert into sans résultat et je reste bloqué.

Par avance merci de votre aide

Valentin
oursviking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 10h37   #2
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 978
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 978
Points : 1 582
Points : 1 582
Envoyer un message via MSN à carden752
Bonjour,

Tu peux effectivement le faire avec un update et un select.

La fonction case when permet de spécifier une valeur en fonction d'un critère
L'exemple ci-dessous te met dans catégorie senior si son age est plus de 18, sinon junior s'il a entre 14 et 18ans et sinon minime.
A toi de l'adapter à ton problème.


Code :
update participant set categorie = (select case when(l.age>18) then 'senior' else case when(l.age>14) then 'junior' else 'minime' from licencie l)
Cependant donne nous au moins la description de tes tables pour qu'il nous soit plus facile de t'aider.
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 10h46   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 18
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 18
Points : 2
Points : 2
Merci beaucoup pour cette solution, je ne connaissais pas cette fonction case when.
Mais en fait je bloque à l'étape d'avant, c'est à dire que j'arrive par le biais d'une fonction select a afficher les ages calculés à partir des dates de naissance mais je n'arrive pas à ce qu'ils s'inscrivent dans la table participant dans une colonne age....

J'ai donc une table participant avec : nom, prénom, ville, adresse..., date de naissance et une autre table catégorie avec une dizaine de catégories en fonction de l'âge.
oursviking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 10h49   #4
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 978
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 978
Points : 1 582
Points : 1 582
Envoyer un message via MSN à carden752
Code :
update participant set age = (select "qui affiche l'age")
ne marche pas?
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 11h00   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 18
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 18
Points : 2
Points : 2
Non j'ai déjà essayé ça :
UPDATE Participant
SET Age = (Select (Year(Date()-Datenaiss-1)-year(0))
From Participant);

Et cela me dit que l'opération doit utiliser une requête qui peut être mise à jour ...
oursviking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 11h12   #6
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 174
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 174
Points : 2 802
Points : 2 802
Bonjour,

Je me permets de m'imisser dans ce fil...
Citation:
Et cela me dit que l'opération doit utiliser une requête qui peut être mise à jour
Ce message apparaît, souvent, quand Access "a des doute" sur l'unicité des enregistrements.

La table "Participant" possède-t-elle une clé unique ?
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 11h23   #7
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 174
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 174
Points : 2 802
Points : 2 802
Sinon :
Code :
UPDATE Participant SET Participant.age = Year(Date()-Datenaiss-1)-Year(0)
devrait suffire.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 12h56   #8
Invité de passage
 
Inscription : décembre 2010
Messages : 18
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 18
Points : 2
Points : 2
Merci cela fonctionne bien, sauf que j'ai l'impression que cela rajoute une année ...
Je m'explique une personne née le 01/12/1974 à selon la table 37 ans alors que normalement il devrai avoir 36 ans !
J'ai pourtant utilisé la formule proposée :
UPDATE Participant SET Participant.age = Year(Date()-Datenaiss-1)-Year(0)

Est-ce vraiment la bonne méthode pour calculer l'âge à partir d'une date de naissance ?
oursviking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 13h06   #9
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 174
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 174
Points : 2 802
Points : 2 802
Code :
Année(Date())-Année([Datenaiss])
me semble suffire.
Mais bon, nous avons répondu sur le fond... après, il faut tester...
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 14h17   #10
Invité de passage
 
Inscription : décembre 2010
Messages : 18
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 18
Points : 2
Points : 2
Merci beaucoup pour votre aide, j'ai enfin trouvé la solution !
oursviking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 20h35   #11
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 978
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 978
Points : 1 582
Points : 1 582
Envoyer un message via MSN à carden752
Bonjour,

Pour le calcul de l'âge, tu peux regarder dans la FAQ http://access.developpez.com/faq/?page=dates#HowOld
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h12.


 
 
 
 
Partenaires

Hébergement Web