Bonsoir à tous.
J'ai besoin de votre aide pour l'élaboration d'une requête mysql...
Structure:
Mon but est de récupérer la somme des minutes passées par membre et de faire un top10.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 medias ----------- id titre format ... users ---------- id username ... views ---------- id user_id media_id vision
Je le fais pour un simple membre avec un calcul php derriere mais pour établir un top10 basé sur tout les membres, j'ai peur que ça fasse trèèèès lourd.
exemple concret:
user id=1, nommé charlie, a vu le media id=5 qui dure 42min (format=42) à 35 reprises (vision=35). Ce qui nous fait donc 1470min passé à visionner ce media.
Mais sachant que 1 users a vu 0,n medias, il faut additionner toute les multiplications des vision*format trouvé pour un utilisateur.
Ca devrait donc se passer en 2 étapes (requete imbriqué?)
SELECT username, (vision * format) as spendtime FROM medias, views WHERE users.id=views.user_id AND medias.id=media_id ORDER BY username
> résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 username spendtime charlie 1470 charlie 654 charlie 450 bobby 25 bobby 664 tango 50
Ok ça fonctionne, maintenant faut aditionner les résultats pour n'avoir plus que des enregistrements distincts triés par ordre de "sumspendtime" de ce style:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 username sumspendtime charlie 2574 bobby 689 tango 50
Mais là je sèche je n'arrive pas à savoir quelle(s) jointure(s) ou méthode utiliser pour arriver à mes fins et si c'est faisable ou non en 1 seule requête ou avec 2.
J'utilise ORM et n'y arrivant pas, jai pris la chose à lenvers en commençant par la requête mysql classique et ensuite la "convertir" pour mon code php mais je bloque donc pas la peine d'aller plus loin faut déjà réussir via phpmyadmin ^^
Si quelqu'un pouvait m'éclairer, car là
Merci énormément et bonne soirée
Partager