Requete sql count
PCRef
-
Dalida Messages postés 7114 Date d'inscription Statut Contributeur Dernière intervention -
Dalida Messages postés 7114 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.
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.
Configuration: Windows XP Internet Explorer 6.0
8 réponses
-
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... -
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é.
-
select mot, count(mot) as nbrDeFois from tatable group by mot limit 0, 49;
sa devrait le faire -
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 !
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Merci à tous pour vos réponses, je teste et je vous tiens au courant, mais franchement MERCI !
-
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 -
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.