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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Requete (max, group by,...)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Requete (max, group by,...)

n°1077955
Darkness S​hade
Outiété!
Posté le 10-05-2005 à 15:41:12  profilanswer
 

Salut,
 
Je travaille sous MySQL 4.1.9 sous Windows.
 
Pour cette requete, on a besoin de 2 tables :  
 
PARENT_FAM
id(pk)
role (pk)
 
IDENTITE
id  
chgid (format date)
nom
pnom
 
Le but de la requete est de recuperer pour chaque personne le id(en fonction du role associé ),nom,pnoms le plus recent en fonction du champs chgid.
 
Dans la table PARENT_FAM , il faudrait selectionner uniquement les id dont le role n'est pas : "enfant".
 
Dans la table IDENTITE, certains champs d'une identite peuvent changer au cours du temps.
A chaque changement, on copie l'identite de la personne en changent le champs chgid
 
Ex:
id     2
chgid  01/01/1980
nom    toto
pnom   paul
 
id     2
chgid  01/01/2000
nom    toto
pnom   pierre
 
Donc en gros,pour chaque ID récuperée dans la table PARENT_FAM n'étant pas un enfant, il faut selectionner dans IDENTITE celui qui a le champ CHGID le plus recent.
 
 
J'avais commencé a faire ça, mais c'est totalement foireux....
 

SELECT parent_fam.id,MAX(chgid),nom,pnom
FROM identite, parent_fam
WHERE parent_fam.id= identite.id
GROUP BY parent_fam.id


 
Je faisais pas le test sur le role , et en plus, ca me renvoyé pour chq ID le bon chgid, mais pas le bon nom,pnom.
 
 
 
Si vous pourriez m'aidez pls, ca serait cool, merci ! :jap:  
 
 

mood
Publicité
Posté le 10-05-2005 à 15:41:12  profilanswer
 

n°1078022
crazywolf
Posté le 10-05-2005 à 16:03:27  profilanswer
 

G eu presque le meme pb y'a quelques temps, si tu enlèves le max et que tu fais un ORDER BY chgid DESC ça peut peut-être marcher ? si tu veux quelque chose d'optimisé c pas à moi qu'il faut demander par contre :)
 
EDIT: je viens de relire j'avais pas bien capté le but de la requête oublie-moi..


Message édité par crazywolf le 10-05-2005 à 16:10:12
n°1078355
moi23372
Posté le 10-05-2005 à 19:49:02  profilanswer
 

Code :
  1. SELECT parent_fam.id, nom, prenom, chgid
  2. FROM identite as ident1, parent_fam
  3. WHERE parent_fam.id = ident1.id
  4. AND chgid = ( SELECT MAX(chgid)
  5.               FROM identite as ident2
  6.               WHERE ident1.id = ident2.id)
  7. AND role <> 'enfant';


 
essaye un peu cela, en tt cas c'est vers ce genre de chose que tu dois t'orienté, c'est pas évident de pondre une requete sql sans pour autant connaitre bien la bd et le faire sur papier c'est pas mon fort ;)  
j'espere t'avoir quand mm aidé un peu


Message édité par moi23372 le 10-05-2005 à 19:52:58
n°1079104
Darkness S​hade
Outiété!
Posté le 11-05-2005 à 11:25:07  profilanswer
 

moi23372 a écrit :

Code :
  1. SELECT parent_fam.id, nom, prenom, chgid
  2. FROM identite as ident1, parent_fam
  3. WHERE parent_fam.id = ident1.id
  4. AND chgid = ( SELECT MAX(chgid)
  5.               FROM identite as ident2
  6.               WHERE ident1.id = ident2.id)
  7. AND role <> 'enfant';


 
essaye un peu cela, en tt cas c'est vers ce genre de chose que tu dois t'orienté, c'est pas évident de pondre une requete sql sans pour autant connaitre bien la bd et le faire sur papier c'est pas mon fort ;)  
j'espere t'avoir quand mm aidé un peu


 
 
Nikel ! Ca marche, tu m enleves un belle epine la, jte remercie :jap:  :sol:  
++


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

  [SQL] Requete (max, group by,...)

 

Sujets relatifs
[Débutant] Requête Sqladoquery : recuperer resultat d'une requete [resolu]
[Debutant] Construire une requeterequete mysql pour gerer un planning
Problème avec requète sur 2 champs ...Contraintes en SQL
Requete en LIKE sous VBAmenu deroulant et requete
[SQL] [Résolu] Requete avec COUNT et GROUP BY[SQL & Criteria] ORDER BY & GROUP BY dans une même requete
Plus de sujets relatifs à : [SQL] Requete (max, group by,...)


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)