Recuperer la derniere donnee en regroupant pour chaque fiche [RESOLU] - PHP - Programmation
Marsh Posté le 06-09-2008 à 22:02:47
Bonsoir,
Essaye avec max, sur la date. J'ai jamais essayé sur un champ de ce type. J'ai pas de serveur sous la main pour te le dire. Y a pas de raison.
SELECT max(date) AS last_note FROM matable GROUPE BY note
A plutard
Marsh Posté le 07-09-2008 à 12:00:31
Salut cvb,
C'est plus ou moins une bonne idée : pour la date c'est okay ça me prend la derniere date pour chaque jeu MAIS ça ne me prend pas la note correspondante à la date en question.
Il faudrait en fait trouver un moyen pour inserer ce code dans le WHERE directement; du style :
Citation : MAX(date) = matable.date |
Non ?
Marsh Posté le 07-09-2008 à 12:02:04
SELECT idjeu, note, date
FROM tests t1
WHERE date = (SELECT MAX(date) FROM tests t2 WHERE t1.idjeu = t2.idjeu)
Marsh Posté le 07-09-2008 à 12:44:47
Sielfried > Il faut que la base de donnée qu'il utilise, accepte les requêtes imbriqués
Marsh Posté le 07-09-2008 à 12:49:51
Si c'est le cas en faisant cela ca fonctionne plus ou moins :
AND date = (SELECT MAX(date) FROM jeu) AND
Mais ça me prend alors que la derniere date de toute la table : sans faire la distinction entre mes différents idjeu.
Donc dans mon exemple, ça m'affiche uniquement l'id 5 ; alors que l'id 3 et 4 aurait du etre affiché aussi.
Merci
Marsh Posté le 07-09-2008 à 12:59:02
cvb > certes, mais bon ça commence à devenir rare, les SGBD qui gèrent pas ça, je crois.
jojo023 > Je comprends pas, là. D'où sortent tes "AND" ? Que donne la requête que j'ai donnée, telle quelle ?
Marsh Posté le 07-09-2008 à 13:21:12
Bah j'ai pleins d'instructions avant et apres pour dire que idjeu = a l'idjeu d'une autre table etc.
Mais concernant ta requete je ne comprend pas un truc : d'où tu sort les t1 et t2 ?
Merci
Marsh Posté le 07-09-2008 à 13:30:34
jojo023 a écrit : Bah j'ai pleins d'instructions avant et apres pour dire que idjeu = a l'idjeu d'une autre table etc. |
Hmm... ça me semble être le but des jointures. M'enfin faudrait voir le code et ce que tu cherches à faire...
Citation : |
Ce sont des alias de tables.
Marsh Posté le 07-09-2008 à 14:38:25
sielfried a écrit : cvb > certes, mais bon ça commence à devenir rare, les SGBD qui gèrent pas ça, je crois. |
re,
Je suis bien d'accord mais comme il n'as pas spécifié la SGBD qu'il utilise, je prefère le préciser
Marsh Posté le 07-09-2008 à 14:47:12
Ta methode sielfried semble fonctionner sans tout mes AND derriere.
Je vous tiens au courant d'ici peu.
Merci toujours à tous les deux.
Marsh Posté le 07-09-2008 à 15:10:03
Bon alors voila ce que j'ai fait ; le probleme c'est qu'il me faut rajouter d'autres tables et d'autres instructions WHERE par rapport à ces tables (à chaque fois que j'essaie un truc ca me fait tout planter et ca met 107 ans a redemarrer) :
$reponse = mysql_query(sprintf('SELECT t1.date as datej, t1.note as notep FROM jeu t1 WHERE t1.date = (SELECT MAX(date) FROM jeu t2 WHERE t1.idjeu = t2.idjeu) AND t1.iduser = %d', mysql_real_escape_string($_GET['user'])));
Marsh Posté le 07-09-2008 à 15:18:32
Ha enfin c'est bon : c'est parce que j'ai demander trop de choses a mon ordi que ca commence a planter mon systeme.
Mais c'est bon maintenant ca marche vraiment PARFAITEMENT : vous etes franchement geniaux (et je dis pas ca parce que vous m'avez recolu ce problème).
Merci cvb et sielfried d'avoir pris le temps de me repondre.
Marsh Posté le 06-09-2008 à 21:29:51
Bonsoir,
J'ai un soucis que j'essaie de sollutionner dans tous les sens mais en vain :
- Ma table se présente ainsi :
id | idjeu | date | note
1 | 23 | 112203020 | 12
2 | 23 | 112203040 | 15
3 | 15 | 112203065 | 13
4 | 18 | 112203150 | 5
5 | 23 | 112282010 | 11
- Je voudrais donc recuperer dans une requete :
selectionner la derniere note enregistrée (par rapport à la date définie en UNIX) et ce pour chaque jeu.
J'ai essayer avec GROUP BY ; ORDER BY et LIMIT mais je n'y arrive pas.
Merci d'avance.
Message édité par jojo023 le 07-09-2008 à 15:18:52