Afiicher les 5 résultats les plus nombreux dans une table MySQL - PHP - Programmation
Marsh Posté le 17-04-2007 à 01:28:39
j'ai pas tout lu jregarde une video, mais celon ta derniere phrase je dirai d'utiliser MAX(COUNT(id))
Marsh Posté le 17-04-2007 à 01:30:01
Je suis assez novice en php, il me faudrait seulement un exemple d'utilisation ici ou quelque par sur le net, j'ai déja fait les recherches ...
Marsh Posté le 17-04-2007 à 01:36:14
c'est pas du PHP mais du SQL
Marsh Posté le 17-04-2007 à 01:39:16
bon jvien de comprendre ^^ pendant un passage chiant du film
ta deux tables
donc tu fait une requete qui choppe les id des 5 plus populaires news, puis tu les affiche.
COUNT(champ) permet de ... compter le nombre de row
Marsh Posté le 17-04-2007 à 02:11:45
Peux tu m'écrire un exemple de requete, parce que je ne te suis pas lol!
Marsh Posté le 17-04-2007 à 02:13:42
décris moi tes tables
Marsh Posté le 17-04-2007 à 02:16:24
la table statictics contient les résultats de tout les quiz qui ont été répondus, donc chaque enregistrement a comme 'id' celui de quiz répondu une fois, donc plus ce 'id' est présent, plus il est populaire.
le order doit etre en fonction du total compté ...
beosin d'autres choses ?
Marsh Posté le 17-04-2007 à 02:32:06
non
premiere requete:
SELECT id FROM statistics ORDER BY COUNT(id) DESC LIMIT 0,5
tu fetch
SELECT * FROM quizz WHERE id=$id
mais c'est pssible que je dise des conneries a cette heure devant un film :s
Marsh Posté le 17-04-2007 à 02:51:19
J'utilise ceci qui me semblait correct (selon tes indications):
Code :
|
Mais j'obtien cette erreur: Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource
Marsh Posté le 17-04-2007 à 11:23:06
merde tu peux pas foutre de COUNT() dans un ORDER BY ?
gnééé heuuu
Marsh Posté le 17-04-2007 à 11:25:03
si, mais faut mettre un group by sur id aussi
Marsh Posté le 17-04-2007 à 11:25:52
SELECT setid FROM statistics group by id ORDER BY COUNT(*) DESC LIMIT 0,5
Marsh Posté le 17-04-2007 à 11:26:46
s'ta dire qu'il faut qu'il soit dans les champs "selectés" pour pouvoir faire un order dessus ...
Code :
|
edit: ah bin non y'a pas besoin... mais je trouve ça dégueu
Marsh Posté le 17-04-2007 à 11:30:41
non pas besoin
par contre merci MagicBuzz j'avais zappé le group by
Marsh Posté le 17-04-2007 à 12:05:10
anapajari a écrit : s'ta dire qu'il faut qu'il soit dans les champs "selectés" pour pouvoir faire un order dessus ...
|
ouais non, tu peux trier par ce que tu veux, pas besoin de sélectionner )
tu peux même trier par un sous-select si tu veux
Marsh Posté le 17-04-2007 à 12:14:03
nan mais ça d'accord, mais je continue de trouver ça dégueu quand même
genre:
Code :
|
je trouve vraiment pas ça terrible puisqu'il y a gros risque d'oubli que b sert également à l'aggregat ... mais bon ça marche ...
Marsh Posté le 17-04-2007 à 12:31:56
ça de l'optimisation pour éviter d'utiliser de la mémoire avec des données retournées dans le dataset qui servent à rien
après, comme dans le cas général, dès qu'on commence à faire de l'optimisation, on commence l'imbittabilité et la non-maintenabilité
Marsh Posté le 17-04-2007 à 13:55:16
MagicBuzz a écrit : ça de l'optimisation pour éviter d'utiliser de la mémoire avec des données retournées dans le dataset qui servent à rien |
\o/ optimisons tous les données retournées par un fetch avec un limit 0,5 ...
Marsh Posté le 17-04-2007 à 13:57:11
oui mais tu te rends pas compte, si ça tourne sur un 8086 avec 256 Ko de mémoire vive, et qu'il y a 100 000 connectés en même temps
(ah bon, même comme ça ça suffit pas à saturer la mémoire ? )
Marsh Posté le 17-04-2007 à 01:20:01
Bonjour a tous, j'ai un site de quiz et j'utilise la portion de code suivante pour afficher mes 5 plus recents quiz sur ma homepage:
Mais le probleme, c'est que je veux aussi afficher les plus populaires, pour cela je dois trouver dans ma table "statistics' les 5 quiz donc l'id revient le plus souvent. Ça doit bien être possible, mais comment ?
---------------
www.failqc.com : FailBlog québécois