Requete sql count

PCRef -  
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

J'ai une table mysql nommée "recherches" qui contient simplement mot recherchés par les internautes dans un formulaire de recherche. Chaque fois qu'un internaute tape un mot, ce mot vient ajouter une ligne dans la table (une colonne id_recherche auto increment et une colonne mot).

Je souhaite pouvoir afficher simplement en php la liste des 50 mots les plus recherchés, et le nombre de fois qu'ils l'ont été.

J'ai essayé SELECT COUNT mais rien a faire, pas moyen d'obtenir et de traiter en php les deux en meme temps.

Je galere complet et je n'arrive pas a afficher les deux. Savez vous comment faire ? Merci d'avance.

8 réponses

mister-ti Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   62
 
Tu as essayé la fonction LIMIT ?

Il me semble par exemple que LIMIT 0,49 affiche les résultats à partir de la ligne 0 jusqu'à 49 (soit les 50 premières réponses).

Si tu couples LIMIT à la requete qui va bien (du genre select les_mots from la_table order by nb_de_fois_que_le_mot_a_été_ajouté), ça devrait aller...
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   923
 
salut,

ouais le "LIMIT 50" en fin de requête ça te renverra que les 50 premiers. le problème c'est pour connaitre les occurrences les plus nombreuses. il doit bien y avoir moyen de le faire en une requête ou deux.
mais je serais toi je changerai la table.

tu fais un champ unique 'mot' qui te servira de clé (comme ça tu es sûr de ne pas rentrer deux fois le même mot. et un champ 'nombre'. à chaque fois qu'un utilisateur tape un mot, si le mot n'existe pas tu crées l'enregistrement avec 'nombre' = 1. si le mot est déjà présent tu incrémentes 'nombre'.

pour retrouver les plus utilisés un simple 'SELECT' avec 'ORDER BY nombre LIMIT 50' et le tour est joué.
0
youplaboum
 
select mot, count(mot) as nbrDeFois 
from tatable
group by mot
limit 0, 49;


sa devrait le faire
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   923
 
a ben voila !
je pensais pas à qu'on pouvait Count() autrement que par 'SELECT COUNT' tout seul !
et tu mets un 'ORDER BY' sur le 'nbrDeFois' je suppose.

heureusement y en a encore qui réfléchissent, bravo !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
youplaboum
 
a oui mince, le group by sur nbrDeFois,
bien vu dalida
0
PCRef
 
Merci à tous pour vos réponses, je teste et je vous tiens au courant, mais franchement MERCI !
0
PCRef
 
Autre question, car je suis aussi limité en php...

Une fois la query faire, pouvez vous me dire en deux mots comment je peut récupérer mot et nrdDeFois ? Avec un mysql_fetch_row ?

Merci d'avance
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   923
 
ouaip !

moi je le fais avec ça
$result = mysql_query($sql_query, $link);
if($result){
	$row = mysql_fetch_assoc($result);
	$mot = $row['mot'];
	$nrdDeFois = $row['nrdDeFois '];
}

je sais pas quel est le mieux.
0