2011-05-08 4 views
1

J'ai deux tables, une appelée épisodes, et une appelée score. La table des épisodes comporte les colonnes suivantes:tri par valeur dans une autre table php mysql

id | numéro | titre | description saisissez

Le tableau de score a les colonnes suivantes:

id | userId | showId | score

L'idée est que les utilisateurs évalueront un spectacle. Chaque fois qu'un utilisateur évalue une émission, une nouvelle ligne est créée dans la table de partition (ou mise à jour si elle existe déjà). Quand je liste les spectacles, je fais la moyenne de tous les scores pour cet ID de spectacle et je l'affiche à côté du nom de l'émission.

Ce que je dois être en mesure de faire est de trier les spectacles en fonction de leur note moyenne. J'ai regardé rejoindre les tables, mais je n'ai pas vraiment compris.

Merci

Répondre

2

Pour trier les résultats, l'utilisation et ORDER BY clause. Vous pouvez trier par colonnes générées, telles que le résultat d'une fonction d'agrégat telle que AVG.

SELECT e.title, AVG(s.score) AS avg_score 
    FROM episodes AS e 
    LEFT JOIN scores AS s ON e.id=s.showId 
    GROUP BY e.id 
    ORDER BY avg_score DESC; 
+0

Cela renvoie les résultats correctement, mais il ne les commande pas du tout. La commande est la même que l'ordre des lignes dans la table. – Koibu

+0

Ça a marché. Je ne suis pas sûr de ce que j'ai fait pour que cela fonctionne. Merci! – Koibu

0

Vous avez raison. Vous devez joindre ces tables, puis utiliser GROUP BY dans la colonne 'id' de la table 'episodes'. Ensuite, vous pourrez utiliser la fonction AVG() dans la colonne 'score' des tables de scores.

SELECT AVG(scores.score) FROM episodes LEFT JOIN scores ON scores.showId = episodes.id GROUP BY episodes.id 
0
SELECT episodes.*, AVG(score.score) as AverageRating FROM episodes 
INNER JOIN score ON (episodes.id = score.showId) 
GROUP BY episodes.id 
ORDER BY AVG(score.score) DESC 
+0

Cela ne fonctionne pas. Je reçois un espace vide où se trouve ma boucle while. – Koibu

+0

Je l'ai testé avec une copie de vos tables, dans le navigateur de requête MySQL, cela fonctionne. – Johan

Questions connexes