Calcul d'âge dans une requête

Résolu
isold Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -  
isold Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   5
 
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