|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 64 ![]() |
Bonjour,
Voilà mon problème est le suivant j'aimerai créer de façon permananante des champs de type formule (comme excel) Exemple un champ 'age_personne' dans la table personne : (TO_DAYS(NOW())-TO_DAYS(date_naiss_personne))/365 etc.. je voulais savoir si c'est possible ou suis-je obligé de gérer ca dans mon programme lors du requettage? merci d'avance (PS: sans utiliser les vues) Laurent |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
C'est le stockage de la formule ou le résultat que tu souhaites ? ced |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 64 ![]() |
en faite je souhaiterai plutot le résultat:
exemple: si la personne est arrivée au monde le 08/06/1988 age_personne affichera 20 merci d'avance de me dire si c'est possible ou pas? (j'ai moi même des doutes mais je préfère demander) Laurent |
|
|
00
|
|
|
#4 |
![]() ![]() |
En bonne conception on ne stocke pas les calculs, sauf si le résultat doit être archivé.
Pour un âge, je ne pense pas que ce soit le cas. Tu stocke la date de naissance et au moment où tu as besoin de la donnée, tu peux facilement calculer l'âge avec le langage de ton application ou directement par la requête MySQL.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#5 | |
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 64 ![]() |
Citation:
Mais le problème vient que plusieurs programmes peuvent utiliser la même base de données! Et je ne souhaite pas que ce soit les programmeurs qui gèrent ça (pour des raison de validité des données), mais je préfère que cela soit géré par la base de données (un peu comme un tableur). Je vous remercie Laurent |
|
|
|
00
|
|
|
#6 |
![]() ![]() |
Justement ! La donnée toujours valide, c'est la date de naissance et en principe elle ne change jamais, sauf erreur de saisie. Alors que l'âge, par définition, change chaque année !
Sauf à mettre à jour une colonne âge toutes les nuits par une procédure automatique, je ne vois pas comment garder un âge fiable en base de données. Sinon il est bien sûr possible de stocker dans un VARCHAR une formule littérale qui contient un morceau de SQL mais il faut sortir ça de la table 'personne' sinon c'est la même formule qui est répétée sur toutes les lignes. Ce que je suggère est une table qui pourrait s'appeler 'Règles' et ayant la structure suivante : - RegleId - RegleLibelle - RegleCommentaire - RegleFormule La colonne RegleFormule contiendrait dans le cas qui te préoccupe le morceau de SQL à utiliser obligatoirement par les programmeurs pour calculer l'âge d'une personne.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : octobre 2006 Messages : 121 ![]() |
Bonjour,
Ne pourrez t'on pas utiliser une procédure dans ce cas ? Bonne journée MS |
|
|
00
|
|
|
#8 |
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 64 ![]() |
oui je pense que passer par des triggers peut être une bonne idée !
je vais me renseigner de ce côté. Merci d'avance Laurent |
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Inscription : octobre 2006 Messages : 121 ![]() |
Bonjour,
Je pensais plutôt à une procédure ou une fonction,appelable dans une requête Bonne journée MS |
|
|
00
|
|
|
#10 | ||
|
Expert Confirmé
![]() ![]() |
Citation:
Citation:
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
||
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 64 ![]() |
ah?
je vais peut-être vous paraître un cancre et l'utiliser facilement? SELECT age_personne() FROM personne? merci d'avance pour les lumières que vous allez m'apporter Laurent |
|
|
00
|
|
|
#12 | ||
|
Expert Confirmé
![]() ![]() |
Avec quelque chose du genre :
Code :
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
||
|
00
|
|
|
#13 |
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 64 ![]() |
une question je tape ca dans phpmyadmin et c'est magique ca marche ou je doit passer par l'invité de commande?
laurent |
|
|
00
|
|
|
#14 | ||
|
Expert Confirmé
![]() ![]() |
Pour phpMyAdmin il faudra taper cela :
Code :
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
||
|
00
|
|
|
#15 | ||
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 64 ![]() |
Code :
|
||
|
|
00
|
|
|
#16 |
|
Expert Confirmé
![]() ![]() |
Peut-tu montrer le script de création de la table afin que je puisse tester la requête ?
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
|
00
|
|
|
#17 | ||||
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 64 ![]() |
Code :
Note que j'ai fais une erreur c'est : Code :
Merci pour tout ce temps que tu me consacre PS: j'ai essayé avec MYSQL GUI Tools tjrs impossible d'ajouter (même message d'erreur) |
||||
|
|
00
|
|
|
#18 | ||
|
Expert Confirmé
![]() ![]() |
Alors voici la procédure corrigé :
Code :
Pour l'utiliser si tu veux l'age d'une personne en particulier, par exemple d'identifiant 4 : Si tu veux l'age sur une liste de personne : Code :
SELECT age_personne(id_personne) FROM personne;
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
||
|
00
|
|
|
#19 |
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 64 ![]() |
merci bcp ca marche niquel!
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com