Bloc "Rapports personnalisables" - comment définir et utiliser des constantes ?

Re: Bloc "Rapports personnalisables" - comment définir et utiliser des constantes ?

par didier cadiou,
Nombre de réponses : 0

Bonjour Séverin.

J'ai regardé le script SQL que tu cites. Il y a beaucoup de requêtes imbriquées, je comprends que tu ais besoin de définir des constantes.

Je ne connais pas non plus de solution pour faire un script SQL avec le plugin rapport personnalisé. Effectivement on ne peut faire qu'une seule requête.

En conséquence, le script devrait être transformé en requête unique pour que le plugin l'accepte. Je n'ai pas le temps de le reprendre (je rentre de congé), mais parmi les pistes de solutions que j'explorerais si je devais le faire, il y a le fait 

  • de faire plusieurs jointures avec une même table (mdl_course_module et mdl_logstore_standard_log par exemple), mais avec des conditions de jointure spécifiques à chaque besoin,
  • de remplacer certaines sous-requêtes par des comptages conditionnels. Concrètement, au lieu d'une sous-requête avec un 'count()', mettre dans la clause SELECT quelque chose comme '... SUM( IF( m.name NOT IN ('book', 'folder', 'label', 'page', 'resource', 'url', 'recordingsbn'), 1, 0))'. Quand la condition est satisfaite, c'est 1, sinon c'est 0. Après il n'y a plus qu'à faire la somme des 1 pour compter. Ca permet de faire des comptages avec des conditions différentes au sein d'une même requête. C'est quelque chose que j'utilise souvent. Bien sur la condition peut être exprimée autrement qu'avec des 'IF' car tous les SGBD ne l'accepte pas, mais on peut utiliser des 'CASE WHEN, THEN...'.

Moyenne des évaluations Utile (1)