2012-05-22 2 views
0

Je reçois cette erreur avec la requête suivante. S'il vous plaît, aidez-moi à le corriger.Erreur d'obtention '# 1111 - Utilisation incorrecte de la fonction de groupe'

#1111 - Invalid use of group function

  • Table t_person contient personne Détails
  • Table tr_category contient les détails catégorie
  • tableau tr_testimonial contient les détails de la valeur de notation

Toutes les tables ont personpkid terrain commun.

SELECT 
    p.*,c.*,t.* 
FROM 
    t_person p 
    LEFT JOIN tr_category c ON p.personpkid=c.personpkid 
    LEFT JOIN tr_testimonial t ON p.personpkid=t.personpkid 
WHERE 
    avg(t.ratingvalue)>=5 
GROUP BY 
    p.personpkid ORDER BY approvedate DESC 

Nous vous remercions à l'avance, SG

+0

apprenez comment écrire des questions – shevski

+2

@shevski si je pouvais voter vers le bas je le ferais. Quel est le point de mettre cela et ne pas lui donner un lien ou une description qui peut l'aider à réaliser ce que vous avez suggéré. – RSM

+0

@RyanMurphy sûr, http://www.catb.org/~esr/faqs/smart-questions.html – shevski

Répondre

2

Lorsque vous utilisez une expression de regroupement pour filtrer les résultats, vous devez utiliser la clause HAVING. Essayez ceci:

SELECT 
    p.*,c.*,t.* 
FROM 
    t_person p 
    LEFT JOIN tr_category c ON p.personpkid=c.personpkid 
    LEFT JOIN tr_testimonial t ON p.personpkid=t.personpkid 
GROUP BY 
    p.personpkid ORDER BY approvedate DESC 
HAVING 
    avg(t.ratingvalue)>=5 
+0

Merci beaucoup Aleks G. Cela fonctionne. C'était juste une question de séquence de lignes. Merci encore. – user1409671

Questions connexes