steph13 Posté 13 Juin 2006 Posté 13 Juin 2006 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'
Compte supprimé Posté 13 Juin 2006 Posté 13 Juin 2006 Salut steph13, essaie un truc du genre SELECT t1.id, max(t1.date) as date, t2.loginFROM table t1, table t2WHERE t1.login=t2.loginGROUP BY t2.login
Bourinho Posté 14 Juin 2006 Posté 14 Juin 2006 Salut, pourquoi faire deux appels à la table "table"??? SELECT table.login AS login,max(table.date) as dateFROM tableGROUP 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 dateFROM tableGROUP BY login OU SELECT table.login AS login,table.id as idmax(table.date) as dateFROM tableGROUP BY login, id mais je pense que la premiere solution est plus rapide...(mais je ne suis pas sur...) A+
MarvinLeRouge Posté 14 Juin 2006 Posté 14 Juin 2006 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 loginhaving ladate = max(ladate) *gratgrat*
Bourinho Posté 14 Juin 2006 Posté 14 Juin 2006 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+
steph13 Posté 14 Juin 2006 Auteur Posté 14 Juin 2006 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 Merci encore !!
Bourinho Posté 14 Juin 2006 Posté 14 Juin 2006 Voilà qui me rassure!!! Normalement, elles doivent toutes fonctionner!!! Enfin j'espère!!!
MarvinLeRouge Posté 14 Juin 2006 Posté 14 Juin 2006 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
Bourinho Posté 15 Juin 2006 Posté 15 Juin 2006 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...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant