Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2536 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  définir les valeurs d'un champ en fonction d'une soustraction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

définir les valeurs d'un champ en fonction d'une soustraction

n°1135631
zep29
Posté le 30-06-2005 à 11:38:09  profilanswer
 

je ne sais pas si je me suis bien fais comprendre
mais en fait j'ai plusieurs tables dont une qui s'apelle patient et une autre visite
dans la table visite, il y'a un champ Vidate(Date de la visite) et Viagepat(Age du patient à la visite)
dans la table patient il y'a la padatenaiss(date de naissance du patient)
y'a t'il une requete permettant de calculer viagepat (vidate-padatenaiss)?
merci
@+

mood
Publicité
Posté le 30-06-2005 à 11:38:09  profilanswer
 

n°1135711
moi23372
Posté le 30-06-2005 à 12:08:01  profilanswer
 

tout dépend l'SGBD que tu utiles
 
sous oracle tu peux faire:  
 
SELECT EXTRACT (YEAR FROM SYSDATE) - EXTRACT (YEAR FROM padatenaiss)
FROM DUAL;
 
pour les autres ça doit existe aussi! suffit de soustraire de l'année courante l'année de naissance du patient!
si tu veux être plus précis, tu peux le faire aussi, mais ça devient légèrement plus compliqué

n°1135743
zep29
Posté le 30-06-2005 à 12:20:08  profilanswer
 

dak je vais essayer ça tout a l'heure merci

n°1135869
pouyotte
Posté le 30-06-2005 à 14:01:26  profilanswer
 

moi23372 a écrit :

tout dépend l'SGBD que tu utiles
 
sous oracle tu peux faire:  
 
SELECT EXTRACT (YEAR FROM SYSDATE) - EXTRACT (YEAR FROM padatenaiss)
FROM DUAL;
 
pour les autres ça doit existe aussi! suffit de soustraire de l'année courante l'année de naissance du patient!
si tu veux être plus précis, tu peux le faire aussi, mais ça devient légèrement plus compliqué


 
Es-tu sûr que ce soit de l'ORACLE... Je ne connais pas cette syntaxe et en plus, tu ne lui dis pas dans quelle table aller chercher padatenaiss. Je suis plus que sceptique...
 
J'essaierais plutôt ça:
   select to_number(to_char(Vidate,'YYYY'))-to_number(to_char(padatenaiss,'YYYY')) from visite,patient where visite.idpat = patient.idpat

n°1135892
zep29
Posté le 30-06-2005 à 14:11:17  profilanswer
 

c'est une base de donnée Mysql est-ce possible de faire la requête ?

n°1135896
moi23372
Posté le 30-06-2005 à 14:13:10  profilanswer
 

pouyotte a écrit :

Es-tu sûr que ce soit de l'ORACLE... Je ne connais pas cette syntaxe et en plus, tu ne lui dis pas dans quelle table aller chercher padatenaiss. Je suis plus que sceptique...
 
J'essaierais plutôt ça:
   select to_number(to_char(Vidate,'YYYY'))-to_number(to_char(padatenaiss,'YYYY')) from visite,patient where visite.idpat = patient.idpat


 
bien sure que c'est de l'oracle je peux te le certifier!
 
effectivement j'ai fais une légère erreur dans la requête! ici comme on utilise un champ d'une table suffit de remplacer le nom de la table (DUAL) par le nom de la table du schéma relationnel en question...
 
Ta syntaxe avec un to_char et un to_number est beaucoup plus lourde que EXTRACT en oracle. Donc vaut mieux adopter extract.... sinon je pense qu'elle est juste aussi...
 
 

n°1135900
zep29
Posté le 30-06-2005 à 14:15:46  profilanswer
 

j'ai pas un sgbd aussi évolué lol
est-ce possible de realiser la requete avec mysql?

n°1136044
moi23372
Posté le 30-06-2005 à 15:30:56  profilanswer
 

oui bien sure! mais perso je ne connais pas la syntaxe des fonctions permettant de manipuler les dates!
 
il te suffit simplement de trouver la fonction qui permet à partir d'une date d'extraire l'année! ensuite suffira de faire la soustraction.

n°1136650
Arjuna
Aircraft Ident.: F-MBSD
Posté le 30-06-2005 à 23:42:49  profilanswer
 

update visite v
set v.viagepat = (select to_number(to_char(v.vidate - p.padatenaiss, 'YYYY')) from patient p where p.id = v.paid)
 
je suis pas sûr que l'alias "v" marche.
c'est la syntaxe Oracle, d'un SGBD à l'autre, ça peut différer
t'as vraiment des nomenclatures de merde, t'arrive à t'y retrouver ? :D

n°1136655
Arjuna
Aircraft Ident.: F-MBSD
Posté le 30-06-2005 à 23:45:41  profilanswer
 

moi23372 a écrit :

oui bien sure! mais perso je ne connais pas la syntaxe des fonctions permettant de manipuler les dates!
 
il te suffit simplement de trouver la fonction qui permet à partir d'une date d'extraire l'année! ensuite suffira de faire la soustraction.


je trouve que faire la soustraction avant est mieu, ça peut éviter les inexactitudes du genre :
 
Date naissance : 31/12/1980
Date visite : 01/01/2005
 
=> 2005 - 1980 = 25 ans
=> 01/01/2005 - 31/12/1980 = 24 ans et 1 jour - donc 24 (et c'est ça le véritable age)


Message édité par Arjuna le 30-06-2005 à 23:45:57
mood
Publicité
Posté le 30-06-2005 à 23:45:41  profilanswer
 

n°1136830
zep29
Posté le 01-07-2005 à 09:59:05  profilanswer
 

le probleme c'est que j'ai repris le travail d'un élève qui est passé avant et qui n'avait pas terminé
 
j'ai essayé :
 
update visite
set visite.viagepat = (select to_number(to_char(visite.vidate - patient.padatenaiss, 'YYYY')) from visite, patient where patient.panum = visite.panum)  
 
mais reste sans succès :(

n°1137023
Arjuna
Aircraft Ident.: F-MBSD
Posté le 01-07-2005 à 11:48:56  profilanswer
 

Oui, parceque to_number() et to_char() n'existent pas sous MySQL. Cherche les fonctions de MySQL qui te permettent de travailler avec des dates.

n°1137450
zep29
Posté le 01-07-2005 à 16:09:18  profilanswer
 

voila le code qui me permet de calculer l'age en fonction de la date des visites et de la date de naissance :
 
select pa.panum, padatenaiss, vidate, (YEAR(vidate)-YEAR(padatenaiss)) - (RIGHT(vidate,5)<RIGHT(padatenaiss,5)) as viagepat
from patient pa, visite vi  
where pa.panum=vi.vinum
 
maintenant que la reqete est la comment je fais pour mettre à jour tous les enregistrement avec un update. je cherches et je ne trouves pas

n°1137493
Arjuna
Aircraft Ident.: F-MBSD
Posté le 01-07-2005 à 16:20:41  profilanswer
 

Je comprends rien à ton truc :D
 
(YEAR(vidate)-YEAR(padatenaiss)) - (RIGHT(vidate,5)<RIGHT(padatenaiss,5)) as viagepat
 
Pkoi tu fais pas simplement :
 
(YEAR(vidate-padatenaiss)) as viagepat ?


Message édité par Arjuna le 01-07-2005 à 16:21:01
n°1137522
zep29
Posté le 01-07-2005 à 16:45:36  profilanswer
 

pour qu'il puisse calculer l'age exact par exemple s'il est sur sa 20eme année et qu'il ne les a pas atteint il affichera 19


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  définir les valeurs d'un champ en fonction d'une soustraction

 

Sujets relatifs
Access: erreur OBDC sur champ non renseignéUne fonction JS pour detecter si le navigateur le prend en charge ?
Vb sous excel . fonction a faireappel de fonction
[vba] Fonction Nom de Fichiers[MySQL] sélection aléatoire d'enregistrement en fonction de ....
[PostgreSQL] trigger qui ne passe pas les param à la fonctionfonction dopostback
aficher 1 formulaire av les valeurs déjà saisi ds 1 textareaPeut ont recupére la valeur de retour d'une fonction JS dans du php?
Plus de sujets relatifs à : définir les valeurs d'un champ en fonction d'une soustraction


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR