Bonjour,
Je fais appel aux gurus SQL...
Soit la table suivante :
votes
- date (timestamp)
- classement (int)
- numVotant (int)
- numObjet (int)
- numEvenement (int)
Les 3 numXXX sont des clés qui pointent sur les clés primaires de 3 tables
(votants, photos et evenements).
Le vote se déroule comme suit : un votant doit classer n objets (n étant
variable suivant l'évènement) ; ce classement est stocké dans la table
vote, ce qui fait à chaque fois n entrées. Un votant peut voter plusieurs
fois.
On se retrouve donc avec, par exemple (je vire la date, qui sert juste à
trier dans l'ordre), si n = 3 :
classement numVotant numObjet numEvenement
1 1 2 1
2 1 5 1
3 1 8 1
1 2 5 1
2 2 1 1
3 2 3 1
1 1 1 1
2 1 5 1
3 1 8 1
1 1 9 2
2 1 4 2
3 1 6 2
1 2 10 2
2 2 4 2
3 2 1 2
(au passage, un objet peut appartenir à plusieurs évènements ; il y a une
autre table pour faire la relation).
Je voudrais, pour un évènement donné, récupérer le *dernier* vote de chaque
votant, soit les numéros des n objets qu'il àa classé en dernier.
On doit donc récupérer :
évènement 1, votant 1 : 1, 5, 8
évènement 1, votant 2 : 5, 1, 3
évènement 2, votant 1 : 9, 4, 6
évènement 2, votant 2 : 10, 4, 1
Est-il possible de faire ça avec une requète SQL ?
Merci d'avance.
PS : si c'est trop merdique avec ce design, et que vous avez d'autres
suggestions, je suis bien sûr preneur ; l'idée est d'éviter de faire un
traitement en dehors de MySQL.
--
Frédéric
http://www.gbiloba.org