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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Résolu] MySQL : LEFT JOIN et GROUP BY - récupérer la dernière valeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] MySQL : LEFT JOIN et GROUP BY - récupérer la dernière valeur

n°1895920
doumeb
Posté le 16-06-2009 à 20:44:43  profilanswer
 

Bonjour,
 
Je veux récupérer une liste de tous les anciens élèves avec les infos de leur dernier emploi :
nom, prénom, le nom de son dernier emploi et le pays de ce dernier emploi.
 
Table 'anciens' : liste des anciens élèves (nom, prenom)
 
Table 'emploi' : liste des emplois des anciens élèves (id_emploi, id_ancien, nom_travail,pays_travail)
 
Table 'type_pays' : liste de pays (id, libelle)
 

Code :
  1. SELECT DISTINCT el1.nom,el1.prenom,emp.nom_travail,tpaent.libelle
  2. FROM anciens el1
  3. LEFT JOIN emploi AS emp ON emp.id_ancien=el1.elev_id
  4. LEFT JOIN type_pays AS tpaent ON tpaent.id=emp.pays_travail
  5. GROUP BY emp.id_ancien
  6. ORDER BY emp.id_emploi DESC


 
Mon problème est que cela récupère le premier emploi (id_emploi le plus petit) de chaque ancien élève. La clause order by n'influe pas sur le group by et je ne sais pas comment faire.
 
Une idée ?
 
Merci infiniment!!


Message édité par doumeb le 17-06-2009 à 10:20:41
mood
Publicité
Posté le 16-06-2009 à 20:44:43  profilanswer
 

n°1896090
doumeb
Posté le 17-06-2009 à 10:20:22  profilanswer
 

J'ai trouvé :
 

Code :
  1. SELECT DISTINCT el1.nom,el1.prenom,emp.nom_travail,tpaent.libelle
  2. FROM anciens el1
  3. LEFT JOIN emploi AS emp ON emp.id_ancien=el1.elev_id
  4. LEFT JOIN emploi emp2 ON emp2.id_ancien=emp.id_ancien
  5. LEFT JOIN type_pays tpaent ON tpaent.id=emp.pays_travail
  6. WHERE (
  7.     SELECT COUNT(*)
  8.     FROM emploi emp2
  9.     WHERE emp2.id_ancien = emp.id_ancien
  10.     AND emp2.id_emploi > emp.id_emploi
  11. ) < 1
  12. GROUP BY emp.id_ancien
  13. ORDER BY emp.id_emploi DESC

n°1896094
Deamon
Posté le 17-06-2009 à 10:25:11  profilanswer
 

Il n'y aurait pas, à tout hasard, une fonction pour récupérer le minimum en SQL ? Genre "MIN". Ca serait plus propre quand même.


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

  [Résolu] MySQL : LEFT JOIN et GROUP BY - récupérer la dernière valeur

 

Sujets relatifs
[VBS] Récuperer contenu fichier texte dans une variable:Décaler des valeurs de champs MYSQL *RESOLU*
[Résolu] Comment bien structurer mes classes ?[Resolu]Problème de compilation API MYSQL
[RESOLU] - [JTree] Ne pas afficher tous les noeuds[ksh] Récupérer un morceau d'une chaine de caractère
[resolu] clique sur le bouton et une autre fenêtre s'ouvre 
Plus de sujets relatifs à : [Résolu] MySQL : LEFT JOIN et GROUP BY - récupérer la dernière valeur


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