par
@rthur » 06 avr. 2022, 13:55
Ça devrait être faisable en SQL.
Mon conseil : fais d'abord tes tests de requêtes dans phpmyadmin, et une fois que ta requête fonctionnera tu la mettras dans du code PHP.
Etape 1, il faut que tu calcules la moyenne de tes poêmes en utilisant ta table2 :
En SQL pour calculer une moyenne de plusieurs enregistrements, il faut utiliser la fonction AVG() :
https://sql.sh/fonctions/agregation/avg
Par contre, tu ne veux pas calculer la moyenne générale de tous les poèmes, mais celle de chaque poème, du coup il faut que tu utilises la directive GROUP BY idpoeme
https://sql.sh/cours/group-by
Et enfin tu voudras trier les résultats pour avoir le poème avec la moyenne la + haute en premier.
Ça se fait avec la directive ORDER BY et en précisant DESC pour aller du plus grand au plus petit.
https://sql.sh/cours/order-by
Mais pour faire ce tri tu as besoin d'indiquer le nom de la colonne sur laquelle se fait le tri or vu que ce nom est le résultat de la fonction AVG() du coup il faut que tu la nommes explicitement comme ceci AVG(points) AS moyenne
Une fois que tu as fait tout ça tu dois obtenir la liste des idpoeme avec leur moyenne triée dans le bon ordre.
Quand c'est bon, il te faudra faire une jointure avec ta table1 pour ajouter le nom du poeme
Ça devrait être faisable en SQL.
Mon conseil : fais d'abord tes tests de requêtes dans phpmyadmin, et une fois que ta requête fonctionnera tu la mettras dans du code PHP.
Etape 1, il faut que tu calcules la moyenne de tes poêmes en utilisant ta table2 :
En SQL pour calculer une moyenne de plusieurs enregistrements, il faut utiliser la fonction AVG() :
https://sql.sh/fonctions/agregation/avg
Par contre, tu ne veux pas calculer la moyenne générale de tous les poèmes, mais celle de chaque poème, du coup il faut que tu utilises la directive GROUP BY idpoeme
https://sql.sh/cours/group-by
Et enfin tu voudras trier les résultats pour avoir le poème avec la moyenne la + haute en premier.
Ça se fait avec la directive ORDER BY et en précisant DESC pour aller du plus grand au plus petit.
https://sql.sh/cours/order-by
Mais pour faire ce tri tu as besoin d'indiquer le nom de la colonne sur laquelle se fait le tri or vu que ce nom est le résultat de la fonction AVG() du coup il faut que tu la nommes explicitement comme ceci AVG(points) AS moyenne
Une fois que tu as fait tout ça tu dois obtenir la liste des idpoeme avec leur moyenne triée dans le bon ordre.
Quand c'est bon, il te faudra faire une jointure avec ta table1 pour ajouter le nom du poeme