Re: Requète MySQL

Top Page

Reply to this message
Author: Frédéric
Date:  
To: Bruno Vernay
CC: ML Guilde
Subject: Re: Requète MySQL
Le jeudi 26 novembre 2009 10:27, Bruno Vernay a écrit :

> Le plus simple est à priori de faire la requete genre :
>
> Select numEvenement, numVotant, numObjet, classement
> FROM ..
> GROUP BY numEvenement, numVotant, numObjet, classement
> HAVING date = MAX(Date)
>
> ou
>
> WITH lastDate AS (
> SELECT numEvenement, numVotant, numObjet, MAX(date) As theDate
> FROM ..
> GROUP BY numEvenement, numVotant, numObjet
> )
> Select numEvenement, numVotant, classement, numObjet
> FROM .. INNER JOIN lastDate ON liens sur tous les champs de lastDate
> notamment ?.date = lastDate.theDate
> ORDER BY numEvenement, numVotant, classement


Ah, c'est donc GROUP BY la clé... Je vais regarder la doc de plus près.

> Ensuite soit regrouper les object dans le code (PHP ?) Soit utiliser une
> fonction d'agrégation de mySQL qui fasse la concaténation (je n'ai pas en
> tete)


Je voudrais éviter de coder en dehors (surtout pour la beauté du truc, et
histoire d'en apprendre un peu plus sur SQL).

> Pour ce qui est du design, ca serait éventuellement plus simple de ne pas
> garder tout l'historique des votes dans une seule table.
> Soit mettre un flag pour le dernier vote (le seul intéressant), soit
> envoyer les vieux votes vers une table d'archive. Surtout voir
> l'intérêt de garder l'historique des votes.


Il n'y a pas vraiment d'intérêt, si ce n'est de limiter les opérations lors
de l'insertion ; je voulais que ça reste le plus simple possible, pour plus
de fiabilité, quitte à complexifier lors du dépouillement.

En tout cas, merci pour les pistes.

--
Frédéric

http://www.gbiloba.org