Aller au contenu

requete php


Sujets conseillés

Posté

bonjour,

je recherche dans une base "messagerie" les champs "Pseudo"et "lu" par exemple

à extraire tous les pseudos qui ont plus de 20 enregistrements dont le champs lu est egal à 0.

exemple: phil 28 lu

marc 25 lu

laurence 21 lu

voila si quelqu'un peux m'aider

vero

Posté

Bonjour,

Si tu recherches juste la syntaxe de la requête, la voici:

Select * from messagerie where enregistrements>'20' and lu='0'

Avec les bons noms de champs ce serait mieux. Je considère ici que "enregistrements" contient le nombre d'enregistrements. A modifier selon le nom du champ chez toi.

Dan

Posté

j'ai du mal expliquer les champs de la base sont "pseudo" et "lu"

et je sais pas comment obtenir le nombre d'enregistrements car il faudrait une requete qui compte les lignes par pseudo?

merci

Posté

Bonjour,

Tu peux le faire avec 2 tables.

La premiere "membres" contient les champs :

-Id membre

-Pseudo (1 seul enregistrement par pseudos)

-nb_de_nouv_mess

La deuxieme "messagerie" contient les champs :

-Id mess

-Id membre

-message

-lu

A chaque qu'un nouveau message arrive a pseudo on incrémante

"nb_de_nouv_mess" de 1.

Et a chaque fois que pseudo lit un nouveau message on décrémante "nb_de_nouv_mess" de 1.

-->nb_de_nouv_mess = messages ou lu = 0

Et maintenant c'est facile.

$sql = "SELECT Pseudo FROM membres WHERE nb_de_nouv_mess>20";

C'est surement pas la façon la plus simple mais ça peut p'tetre t'aider.

A+

Posté

merci pour ta reponse mais la table existe deja il doit bien y avoir une possibilité dans une table de compter le nombre d'enregistrements 'lu' par pseudo ?

Posté

Avec la fonction count() intégrée à mysql, tout simplement, non ?

Posté

non helas ca marche pas j'ai essayé

$sql = "SELECT lu='0', COUNT(*) FROM messagerie GROUP BY destinataire DESC LIMIT 0, 30 ";

merci pour vos idees

Posté

Plutôt ceci, non ?

$sql = "SELECT lu,destinataire,COUNT(*) FROM messagerie where lu='0' GROUP BY destinataire DESC ";

Posté

merci en effet c'est sur la bonne voie mais je n'arrive pas à afficher le resultat de count(*) sur la page php par contre dans phpadmin ca donne le bon resultat sauf que je voudrai afficher que les resultats superieur à 20

voila si quelqu un peut completer...

Posté

Les résultats où le count(*) est supérieur à 20 ?

Remplace le "where lu='0'" par "where lu='0' and count(*) > '20'" , ca devrait marcher.

Posté

pour rajouter un critere sur une clause group by, il faut utiliser HAVING

Si j'ai bien compris la demande formulée...

SELECT destinataire,COUNT(*) as nb FROM messagerie where lu='0' GROUP BY destinataire  HAVING nb>20 DESC

Posté

desolé ca marche pas et pourriez vous me dire ce qu'il faut que je mette pour lire le resultat dans une page php car j'affiche le champs destinataire mais pas le champs count(*)

merci pour votre aide

Posté

ca marche pas, c'est trop vague...

quand j'execute une requete, habituellement, j'ai soit :

- un resultat

- une erreur

pour le champs count(*), pour avoir les idées claires, moi je lui donne une 'etiquette' : count(*) as monetiquette comme cela, après je sais le récupérer facilement

Posté

voila l'erreur

requête SQL :  

SELECT destinataire, COUNT(*) FROM messagerie where lu=0  GROUP BY destinataire HAVING nb>20 DESC LIMIT 0, 30

MySQL a répondu:


You have an error in your SQL syntax near 'DESC LIMIT 0, 30' at line 1

quand au passage sur la monetiquette j'y comprend rien...

merci d'avance

Posté

enleve le DESC.... c'est pour classer le resultat , mais il faut d'abord avoir un resultat plaisant avant de vouloir le classer ;)

SELECT destinataire, COUNT(*) as nb FROM messagerie where lu=0  GROUP BY destinataire HAVING nb>20

Posté

merci ca marche bien dans phpadmin mais j'arrive pas à afficher les resultats dans la page en php.

J'arrive a afficher les pseudos mais pas les chiffres de count(*)

encore un effort et ca va etre bon

Posté

comment tu fais pour afficher les pseudo? parce que le count c'est pareil sauf que c'est la valeur suivante (que j'ai appelé 'nb' grâce au 'as nb')

Posté

bonjour tout marche bien il ne me reste plus qu'a classer les resultats or si je met DESC à la fin de la requete je suis en erreur...

une derniere idee...

Posté
SELECT destinataire, COUNT(*) as nb FROM messagerie where lu=0 GROUP BY destinataire HAVING nb>20 ORDER BY nb desc

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...