IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Calcul de l'âge et insertion dans une colonne


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 18
    Points : 4
    Points
    4
    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

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    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.

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update participant set age = (select "qui affiche l'age")
    ne marche pas?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    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 ...

  6. #6
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour,

    Je me permets de m'imisser dans ce fil...
    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 ?

  7. #7
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Participant SET Participant.age = Year(Date()-Datenaiss-1)-Year(0)
    devrait suffire.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    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 ?

  9. #9
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Année(Date())-Année([Datenaiss])
    me semble suffire.
    Mais bon, nous avons répondu sur le fond... après, il faut tester...

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup pour votre aide, j'ai enfin trouvé la solution !

  11. #11
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. calcul de moyenne sur plusieurs plages dans une colonne
    Par Jean-luc79 dans le forum Excel
    Réponses: 2
    Dernier message: 19/12/2014, 11h20
  2. [MySQL] Calcul et surtout insertion automatique de l'age dans une colonne nommee age
    Par melikmike dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 06/12/2012, 23h51
  3. Insertion dans une table d'une valeur calculée sous VBA
    Par fbourdon dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/11/2009, 20h52
  4. INTERBASE 5.5 insertion dans une colonne BLOB
    Par mariustrezor dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/10/2004, 18h06
  5. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo