|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||||
|
Nouveau Membre du Club
![]() Inscription : février 2010 Messages : 117 ![]() |
Bonjour,
Vu que je suis incapable d'exprimer simplement mon problème avec des mots je vais aller droit au but : Je travaille sur la vue suivante qui varie quotidiennement: Code :
Soit N le jour du mois : je dois fournir les activités entre 5 * (N - 1) et 4 + 5 * (N - 1) En gros la requête devrait avoir cette tronche : Code :
J'ai donc pensé à deux choses. La première c'est donc de simuler le comportement de limite avec un encadrement du score , donc si on est le premier jour du mois il faut prendre tous les tuples dont le score est entre le 1er et le 4 meilleur score, le deuxième jour entre le 5e et le 9e etc etc , comme suit : Code :
Et franchement ça m'a fait mal au coeur de faire ça mais c'est la seul solution viable que j'ai pu trouver .... Ma deuxième idée est plus simple mais je perds le dynamisme de ma vue : Je dois donc exécuter ce code tous les jours ... : Code :
Malgré qu'on peut le simuler comme suit, je n'ai pas réussi à utiliser une colonne dépendant d'une variable Code :
Une autre idée lu sur un post mysql serait de faire une grande table avec des id bigint unsigned de 1 à l'infinie et donc de faire une jointure entre ma vue (classée sur le score) et cette table pour ajouter donc un "id auto increment" sur la vue ... mais après avoir testé tous les types de jointure j'ai pas réussi Dans tous les cas j'ai l'impression de faire des trucs vraiment pas terrible ... C'est pourquoi je poste ici afin de savoir si quelqu'un à déjà rencontré un problème similaire et aurait trouvé une meilleure solution ! Je suis prêt à fournir d'avantage de précisions si nécessaire. En vous remerciant d'avance. Cdt. |
||||||||||
|
|
00
|
|
|
#2 | ||||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Quelque chose me gêne dans ton approche "basic" :
Code :
De plus un LIMIT doit être associé à un ORDER BY pour être pérenne. Code :
Evidemment il faudra rajouter un ORDER BY et potentiellemnt passer par une sous-sous-requête cf d'abord trier puis incrémenter rang puis filter sur rang. Je n'ai pas tester n'ayant pas MySql sous la main. Sinon tu peux générer une table calendrier et créer une view sur la jointure entre la table calendrier et la vue top_activites mais comme je n'ai pas bien compris les critères de jointures je ne m'y risquerais pas Avoir une table calendrier est très commun quand on doit fournir des stats par date. Une petite procédure MySql fera l'affaire pour alimenter la table calendrier. De plus une table calendrier te sera probablement utile pour d'autres requêtes. |
||||
|
|
00
|
|
|
#3 | ||||
|
Nouveau Membre du Club
![]() Inscription : février 2010 Messages : 117 ![]() |
Bonjour et merci pour votre réponse !
Citation:
Le score indiquant évidemment la popularités d'une activité Mon objectif est donc de le 1er jour de chaque mois de fournir les 5 meilleures activités de cette vue, puis le 2e jour les 5 suivantes (5 à 9) , puis le 3e jour les 5 suivantes (10 à 14), puis le 4e jour les 5 suivantes .. ... puis le Nieme jour les activités entre 5 * (N - 1) et 4 + 5 * (N - 1) En ce qui concerne la requête avec variable : Code :
Citation:
Ma seule relation serait le n° de row d'un tuple "id | score" avec la date du mois en cours, chose que j'essaie désespérément de rajouter sans succès .. Cdt. |
||||
|
|
00
|
|
|
#4 | ||
|
Nouveau Membre du Club
![]() Inscription : février 2010 Messages : 117 ![]() |
Mea culpa je me suis trompé hier soir (c'est ça de bosser cher soi !) en effet ça marche en faisant ce qui suit
Code :
Merci infiniment skuatamad ! 2 jours que je m'acharne dessus ! |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com