Classement avec clause AVG
Pipol
-
Pipol -
Pipol -
Bonjour,
Bonjour,
Je souhaite faire la moyenne des notes attribuées aux topics de mon forum, et faire un classement de ces topics, du mieux noté au moins bien noté
Je passe donc par une requête sql, mais j'ai un problème, je ne sais pas comment faire la moyenne des notes de chaque topic, et non pas la moyenne des notes de tous les topics
Voilà ma requête:
J'obtiens la liste des topics du forum voulu, mais tous accompagnés de la moyenne de toutes les notes de tous les topics
Savez-vous comment appliquer la clause AVG à chaque topic?
Merci d'avance
Bonjour,
Je souhaite faire la moyenne des notes attribuées aux topics de mon forum, et faire un classement de ces topics, du mieux noté au moins bien noté
Je passe donc par une requête sql, mais j'ai un problème, je ne sais pas comment faire la moyenne des notes de chaque topic, et non pas la moyenne des notes de tous les topics
Voilà ma requête:
$forum_id = '1299'; $sql = 'SELECT t.*, tt.*, AVG(evaluation) AS Moyenne FROM ' . TOPICS_EVALUATION_TABLE . ' AS t, ' . TOPICS_TABLE . ' As tt WHERE tt.forum_id IN (' . $forum_id . ') GROUP BY tt.topic_id ORDER BY Moyenne DESC LIMIT 10'; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { $template->assign_block_vars('eval', array( 'TITLE' => $row['topic_title'], 'MOY' => $row['Moyenne'], )); } $db->sql_freeresult($result);
J'obtiens la liste des topics du forum voulu, mais tous accompagnés de la moyenne de toutes les notes de tous les topics
Savez-vous comment appliquer la clause AVG à chaque topic?
Merci d'avance
A voir également:
- Classement avec clause AVG
- Avg free - Télécharger - Antivirus & Antimalwares
- Logiciel de classement de photos gratuit - Guide
- Logiciel de classement de documents gratuit - Télécharger - Bureautique
- Bp classement foot ✓ - Forum Excel
- Avg rescue cd - Télécharger - Divers Utilitaires
4 réponses
Bonjour,
C'est normal, vous faites une jointure sans clef de jointure
Quel est le lien, champ en commun, clef, primaire et secondaire, entre les tables TOPICS_EVALUATION_TABLE et TOPICS_TABLE, je suppose que c'est un champ topic_id ?
C'est normal, vous faites une jointure sans clef de jointure
Quel est le lien, champ en commun, clef, primaire et secondaire, entre les tables TOPICS_EVALUATION_TABLE et TOPICS_TABLE, je suppose que c'est un champ topic_id ?
Oui, il faut faire une jointure sur les deux tables, sans doute comme ceci
SELECT
t.*, tt.*, AVG(evaluation) AS Moyenne
FROM
' . TOPICS_EVALUATION_TABLE . ' AS t,
' . TOPICS_TABLE . ' As tt
WHERE
tt.topic_id = t.topic_id
AND
tt.forum_id IN (' . $forum_id . ')
GROUP BY
tt.topic_id
ORDER BY
Moyenne DESC
LIMIT 10';
SELECT
t.*, tt.*, AVG(evaluation) AS Moyenne
FROM
' . TOPICS_EVALUATION_TABLE . ' AS t,
' . TOPICS_TABLE . ' As tt
WHERE
tt.topic_id = t.topic_id
AND
tt.forum_id IN (' . $forum_id . ')
GROUP BY
tt.topic_id
ORDER BY
Moyenne DESC
LIMIT 10';