Calcul d'âge dans une requête

Résolu/Fermé
isold Messages postés 57 Date d'inscription samedi 8 mars 2014 Statut Membre Dernière intervention 30 août 2016 - 8 avril 2015 à 23:10
isold Messages postés 57 Date d'inscription samedi 8 mars 2014 Statut Membre Dernière intervention 30 août 2016 - 8 avril 2015 à 23:27
Bonsoir,

Je pose mon problème (table ac_People) :
+-----------+----------+---------+-------+------+-----------+
| ac_People | prenom | nom | anais | adc | autres... |
+-----------+----------+---------+-------+------+-----------+
| Jean | DUPONT | 1925 | 2004 | |
| Isabelle | HOAREAU | 1931 | | |
| Maurice | ROCHARD | 1919 | 2009 | |
| etc... | etc... | ... | ... | |
+----------+---------+-------+------+-----------+
  • anais = année de naissance
  • adc = année de décès


J'aimerais faire une requête telle que :

SELECT prenom, nom, anais, adc, (expression) as age
FROM ac_People
ORDER BY (expression tri);


dans laquelle "expression" permettrait de calculer l'âge de la manière suivante :
  • si le champ adc contient une valeur, c'est que la personne est décédée et son âge (au moment de la mort) est : adc - anais et ne variera plus dans les années futures,
  • si le champ adc est vide, c'est que la personne est encore vivante et son age actuel est year(now()) - anais et peut donc varier d'année en année.


et dans laquelle "expression tri" peut être prénom, nom, anais, adc ou age. Le choix de "expression tri" étant déterminé par PHP

Mon problème : je ne sais pas rédiger l'expression "age" permettant de retrancher anais, soit de adc soit de year(now()) selon le contenu du champ adc

Quelqu'un aurait-il une idée ? Si oui, je le remercie beaucoup par avance. :-)

A voir également:

1 réponse

isold Messages postés 57 Date d'inscription samedi 8 mars 2014 Statut Membre Dernière intervention 30 août 2016 5
8 avril 2015 à 23:27
Argh ! J'aurais dû être plus patiente. J'ai trouvé et mon problème est résolu. La requête est :
SELECT prenom, nom, anais, adc, if(adc>0,adc-anais,year(now())-anais) as age
FROM ac_People
ORDER BY age;


ORDER BY age mais aussi par nom ou prenom, etc...
1