Aller au contenu

Obtenir l'enregistrement le plus récent par membre


steph13

Sujets conseillés

Bonsoir le hub,

Je m'arrache les cheveux sur une requête en ce moment:

La table :

Id / login / date

Avec par exemple :

1/ tata / 2006-05-12

2/ toto / 2006-06-12

3/ tata / 2006-04-12

4/ toto / 2006-03-9

Je veux que ma requête me sorte l'enregistrement le plus recent par login (champs date).

J'ai testé avec

$sql='select distinct login,date,id from table group by login order by date desc';

Mais cela ne me sort pas l'enregistrement le plus recent.

J'ai testé avec un order by id, même punition.

J'ai aussi tenté sans la clause distinct, idem.

En résumé, je coince.

Merci de votre aide.

++

Stef'

Lien vers le commentaire
Partager sur d’autres sites

Salut, pourquoi faire deux appels à la table "table"???

SELECT table.login AS login,
max(table.date) as date
FROM table
GROUP BY login

PS : Surtout que je pense que ta requete va poser un probleme Jeroen... car tu n'as pas de calculs d'agrégation sur t1.id...

"De plus, outres les colonnes représentées hors des calculs d'agrégation doivent figurer dans la clause GROUP BY." lu sur ce lien... Je crois que c'est le probleme qui se posait sur la requete initiale de steph13... Sans ce "calcul d'agrégation", SQL ne sait pas quelle valeur choisir!!!

Si tu veux aussi l'id, t'as le choix, soit

SELECT table.login AS login,
max(table.id) as id,
max(table.date) as date
FROM table
GROUP BY login

OU

SELECT table.login AS login,
table.id as id
max(table.date) as date
FROM table
GROUP BY login, id

mais je pense que la premiere solution est plus rapide...(mais je ne suis pas sur...)

A+

Lien vers le commentaire
Partager sur d’autres sites

Salut,

A mon avis, si on fait un group avec id, ça ne sert à rien : on aura forcément tous les résultats, puisque les ids sont différents.

Peut-être du côté de "having" : un truc du genre

group by login
having ladate = max(ladate)

*gratgrat*

Lien vers le commentaire
Partager sur d’autres sites

Je suis d'accord avec toi Marvinlerouge, le groupe by id ne sert à rien...sauf à avoir une syntaxe correcte!!! Car si l'on omet le id à la fin, la requete ne fonctionnera pas car dans la requete en question, il n'y a pas de "calcul d'agregation" sur id...

A+

Lien vers le commentaire
Partager sur d’autres sites

Salut à tous,

En premier lieu, merci de vous être penché sur ce cas.

Je viens de tester la seconde requête proposé par Bourinho, et cela fonctionne nickel :D

Merci encore !!

Lien vers le commentaire
Partager sur d’autres sites

Je suis d'accord avec toi Marvinlerouge, le groupe by id ne sert à rien...sauf à avoir une syntaxe correcte!!! Car si l'on omet le id à la fin, la requete ne fonctionnera pas car dans la requete en question, il n'y a pas de "calcul d'agregation" sur id...

A+

Ah vi d'accord je m'ai trompu. Bon ben auto :shutup:

Lien vers le commentaire
Partager sur d’autres sites

Salut, ca fait un mois que je m'attaque de front aux requetes SQL... donc je commence a comprendre ce qu'il l'ennuie quand une requete ne fonctionne pas!!! Mais je ne te cache pas que des fois, une malheureuse virgule me pourrit une heure... ;)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...