Aller au contenu

requete php


vero

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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+

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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