Tri dans une base SQL

Résolu
elidris Messages postés 125 Date d'inscription lundi 15 août 2005 Statut Membre Dernière intervention 9 octobre 2007 - 21 août 2007 à 02:32
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 23 août 2007 à 22:05
Bonjour, il y avait longtemps, ça va ? les vacances bien ?

J'aimerais faire une requète dans ma base SQL qui puisse me permettre de ne selectionner que les citations  les plus courtes, par exemple celles ne dépassant pas 15 mots, je ne vois pas trop comment faire et en plus j'aimerais ne pas trop fatiguer le serveur !!!  je me demandais si il fallait que j'ajoute un champs dans ma base indiquant à l'avance le nombre de mot et ensuite faire une recherche sur ce champs ou existe t'il une commande SQL pour effectuer cela ?

merci d'avance, une idée sera la bienvenue...

cdmt

"La vie, c'est pour la vie..."

Site perso:
http://www.intoxitation.com

6 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 août 2007 à 08:12
Hello,

LENGTH() ou CHAR_LENTGH() pour compter les lettres, plutôt que les mots.
Si tu parles de mysql et pas d'un autre serveur de bdd.
Mais si tu peux stocker à l'avance le nombre de lettres (ou de mots, pour le coup), et indexer ce champ, tu gagneras en effet en rapidité et épargnera ton serveur de bdd (si tant est que l'on parle là d'une GROSSE base avec beaucoup de requêtes).
3
elidris Messages postés 125 Date d'inscription lundi 15 août 2005 Statut Membre Dernière intervention 9 octobre 2007
21 août 2007 à 13:54
en fait actuellement ma base n'est pas énorme, je n'ai que environ 1400 lignes mais je n'ai pas de serveur dedié alors j'economise les requêtes ;)
Ce que je veux eviter, c'est de parcourir toutes les lignes pour n'en sortir que 10 ou 20,
qu'appelles-tu une grosse base ? 10000 lignes ?

sinon j'accepte ta réponse pour LENGTH() ou CHAR_LENTGH() sauf si tu me dit que 10000 lignes est une grosse base, à ce moment là, j'ajouterais un champs pendant que je n'ai que 1400 lignes....

Merci à toi ô grand Malalam

"La vie, c'est pour la vie..."

Site perso:
http://www.intoxitation.com
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 août 2007 à 15:06
Non 10000 c'est pas gros. Mais après ça dépend aussi de la fréquence de sollicitation de ta base.
Mais j'opterais pour le stockage en amont du nombre de lettres dans un champ à part, SAUF si tes citations sont amenées à changer souvent. ce qui m'étonnerait bcp, à priori...une citation reste tjrs la même.
0
elidris Messages postés 125 Date d'inscription lundi 15 août 2005 Statut Membre Dernière intervention 9 octobre 2007
23 août 2007 à 20:27
ok je suis en train de tester avec MAX_LENGTH mais malgré mes recherches je n'arrive pas à trouver la bonne formule :

<?php
$query="SELECT m.pseudo, m.avatar, p.proverbe, p.categorie, p.auteur, p.nb_commentaire,p.idproverbe FROM membre m, proverbe p WHERE p.categorie='$cat' AND p.idmembre = m.idmembre";

$result = mysql_query($query);
?>

de quelle façon puis-je ajouter max_length dans ma clause WHERE ? j'ai testé plusieurs configuration comme :

$query="SELECT m.pseudo, m.avatar, p.proverbe, p.categorie, p.auteur, p.nb_commentaire,p.idproverbe FROM membre m, proverbe p WHERE p.categorie='$cat' AND p.idmembre = m.idmembre AND MAX_LENGTH(p.proverbe)=<100 ORDER by idproverbe DESC LIMIT $Ndeb,$Nmax";

Evidemment ça ne marche pas et je ne trouve pas grand chose comme explication sur cette fonction et surtout la manière de l'utiliser !

Merci d'avance
0

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

Posez votre question
elidris Messages postés 125 Date d'inscription lundi 15 août 2005 Statut Membre Dernière intervention 9 octobre 2007
23 août 2007 à 20:32
Bon ok je suis un naze !

j'ai mis MAX_LENGTH au lieu de CHAR_LENGTH

;)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 août 2007 à 22:05
lol...
0
Rejoignez-nous