[ MySQL ] - Problème avec GROUP BY - Help !

- Problème avec GROUP BY - Help ! [ MySQL ] - SQL/NoSQL - Programmation

Marsh Posté le 20-01-2008 à 00:38:51    

Salut à tous,
 
J'ai une question à 1000 $  :o , je pense malheureusement qu'il n'a pas de "bonne" solution à mon problème... arf
 
Bref, j'essaie quand même :
 
- Deux tables : Users et Sessions
- Un "User" peut avoir plusieurs "Sessions", donc relation 1 état N de Users à Sessions
 
Maintenant je voudrais afficher tous les Users avec uniquement la dernière Session qui a été créée  :fou:  
 
Pour celà il y a le champ Created de type "Datetime" dans Sessions.
 
La requète :
 

Code :
  1. SELECT User.Id AS UserId, User.Active AS UserActive, User.Username AS UserUsername,  [...]
  2. Session.Created AS SessionCreated
  3. FROM site_users AS User
  4. LEFT JOIN site_sessions AS Session ON User.Id = Session.UserId
  5. GROUP BY User.Id
  6. ORDER BY User.Username ASC, User.Name ASC, User.Firstname ASC, Session.Created DESC


 
Ca fonctionne presque, à l'exeption que ça me renvoit la première Session sans prendre en compte le "Session.Created DESC", alors que si j'enlève "GROUP BY User.Id", le triage est correcte (1erè ligne pour l'utilisateur "Z" avec le dernier enregistrement de Session)  :sweat: mais ça me retourne X fois le même utilisateur (ce qui est normal mais je ne veux pas).
 
 
Vos propositions sont les bienvenues !


Message édité par Pascal_B le 20-01-2008 à 16:25:53
Reply

Marsh Posté le 20-01-2008 à 00:38:51   

Reply

Marsh Posté le 21-01-2008 à 10:43:23    

1/ Si tu postais la structure de tes tables, ça aiderait bien...
2/ Et si tu demandais exactement ce que tu veux comme résultat
 
Parceque là, ça me semble un peu trop simple...
 

Code :
  1. SELECT User.Id AS UserId, User.Active AS UserActive, User.Username AS UserUsername,  [...]
  2. max(Session.Created) AS SessionCreated
  3. FROM site_users AS User
  4. LEFT JOIN site_sessions AS Session ON User.Id = Session.UserId
  5. GROUP BY User.Id
  6. ORDER BY User.Username ASC, User.Name ASC, User.Firstname ASC


 
PM pour l'ordre du chèque :sol:

Reply

Marsh Posté le 21-01-2008 à 12:25:39    

Oh mec ! Ca fonctionne, merci beaucoup.
 
Pour le chèque... euh  :whistle: [:jauker]  
 
 

Spoiler :

:lol: Merci encore

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed