Action>Personnalisable avec ROLLUP ne fonctionnet plus depuis la V801

Bonjour

Les Action>Personnalisable avec ROLLUP ne fonctionnent plus depuis la V801. 
La présence de "ROLLUP" produit un résultat vide et  l'erreur "Incorrect usage of CUBE/ROLLUP and ORDER BY"

Par exemple : cette requette marche très bien avec les versions de pmb antérieure à la V8 
SELECT libelle AS Catégorie
      ,COUNT(id_empr) AS 'Nombre lecteurs' 
FROM empr 
     LEFT JOIN empr_categ ON id_categ_empr=empr_categ 
WHERE  CURDATE() <= empr_date_expiration
GROUP BY 1 WITH ROLLUP;

Donne :
Catégorie     Nombre lecteur

Dans "Supervision > Hist. de logs" on trouve :



Noter l'ajout automatique de "order by catégorie asc" qui est la cause du message.

Comment faire pour ne pas avoir cet ajout ?

Mercie d'avance de votre réponse

Jean-Luc

Pour info avant la V8 la requette donne :
Catégorie     Nombre lecteur
Adultes     88
Collectivités     15
Jeunes     17
Petits     16
NULL     136




Réponses

  • Bonjour,

    Votre version de mysql est peut-etre ancienne. Cet ajout de "Order by" avec ROLLUP ne serait ok qu'en MySQL8 .0.12 et plus.

    Mais à défaut, vous pouvez réécrire votre requête 

    SELECT *
    FROM (
    SELECT libelle AS Catégorie
          ,COUNT(id_empr) AS 'Nombre lecteurs' 
    FROM empr 
         LEFT JOIN empr_categ ON id_categ_empr=empr_categ 
    WHERE  CURDATE() <= empr_date_expiration
    GROUP BY 1 WITH ROLLUP) t1

    L'ajout automatique du Order by devrait passer .

  • Bonjour 

    Merci de votre réponse 

    Ma version de sql est
    11.1.2-MariaDB-1:11.1.2+maria~deb12 est-ce équivalent à  MySQL8 .0.12 ?

    Votre solution est simple et marche bien 
    Un petit inconvénient : la ligne NULL (le total) est la première. Dans le cas de sous totaux  je ne vois pas trop comment faire quelque chose de lisible.


    L'idéale serait de supprimer ou au moins contrôler l'ajout du Order By
Connectez-vous ou Inscrivez-vous pour répondre.