Champs inconnu sur having

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Champs inconnu sur having

par ayayaaa » 21 mars 2005, 19:45

Ca y est j'ai trouvé une feinte.

Je sais pas si c'est ce qu'il y a de plus propre mais ca marche

voilà le résultat :

Code : Tout sélectionner

$requete_message = "SELECT s.auteur AS auteur, s.titre AS titre, s.IDsujet AS IDsujet, sum(r.valide) AS nb_reponse "; $requete_message .= "FROM euralp_sujet s LEFT JOIN euralp_reponse r on (s.IDsujet=r.IDsujet) "; $requete_message .= "WHERE s.valide=1 "; $requete_message .= "GROUP BY s.IDsujet, s.titre, s.auteur "; $requete_message .= "ORDER BY s.date_maj DESC LIMIT $debut,$nb_enregistrement";
Merci quand même

AYAYAAA

par ayayaaa » 21 mars 2005, 17:39

J'ai essayé ce que tu me dis sans plus de résultat.

Merci quand même

Ayayaaa

par sadeq » 21 mars 2005, 14:30

SELECT s.auteur AS auteur, s.titre AS titre, s.IDsujet AS IDsujet, count(*) AS nb_reponse
FROM euralp_sujet s INNER JOIN euralp_reponse r on (s.IDsujet=r.IDsujet)
WHERE s.valide=1
GROUP BY s.auteur , s.titre, s.IDsujet
HAVING r.valide=1
ORDER BY s.date_maj DESC
LIMIT $debut,$nb_enregistrement

Ta requête fait bien le comptage et t'as pas besoin d'autres méthodes.
Sauf qu'il faut utiliser un INNER JOIN (jointure naturelle = intersection)
et dans le GROUP BY il faut rappeler les champs du SELECT (dans l'ordre de tri vollu)

Ramarque les variables $debut et $nb_enregistrement doivent avoir des valeurs correctes avant l'exécution de la requête.

par ayayaaa » 21 mars 2005, 13:35

Salut,

Merci pour la réponse.

En fait j'ai :
- un champs valide dans la table sujet pour savoir si le sujet a été validé par le modérateur
- et un champs valide dans la table reponse pour savoir si la réponse a été validé par le modérateur.

le where est la pour sélectionné les sujets validés et le having est là pour compter le nombre de réponse validé par sujet.
Mais peut être existe t'il une autre syntaxe pour calculer le nombre de réponse validé.

Quelqu'un aurait une autre idée

Merci par avance

Yannick

par sadeq » 21 mars 2005, 09:50

Moi aussi je te dirais la même erreur si j'étais MYSQL, regarde bien ta requête au niveau du where et du group by :
WHERE s.valide=1 ";
$requete_message .= "GROUP BY s.IDsujet ";
$requete_message .= "HAVING r.valide=1


Alors la question est : le champ valide se trouve où dans r (la table réponse) ou s (la table sujet) ???

Champs inconnu sur having

par ayayaaa » 20 mars 2005, 20:37

Bonjour,

je suis en train de faire un forum.
j'ai 2 tables : sujet et réponse.

Je veux afficher sur une page tous les sujets avec le nombre de réponse pour chaque sujet.
Sachant que je ne dois comptabiliser que les réponses acceptés par le modérateur.

Voilà ma requête :

Code : Tout sélectionner

$requete_message = "SELECT s.auteur AS auteur, s.titre AS titre, s.IDsujet AS IDsujet, count(*) AS nb_reponse "; $requete_message .= "FROM euralp_sujet s LEFT JOIN euralp_reponse r on (s.IDsujet=r.IDsujet) "; $requete_message .= "WHERE s.valide=1 "; $requete_message .= "GROUP BY s.IDsujet "; $requete_message .= "HAVING r.valide=1 "; $requete_message .= "ORDER BY s.date_maj DESC LIMIT $debut,$nb_enregistrement";
il y a un erreur sur le having. Il me dit que r.valide est un champs inconnu.
Quelqu'un aurait il une idée.

Merci par avance pour vos réponses

Ayayaaa