J'observe un petit souci quand je mets en prod un de mes sites à cause d'une requête SQL qui ressemble à ceci :
Code : Tout sélectionner
SELECT distinct substr(date, 1,4) FROM articles WHERE id_categories = 2 AND statut = 1 ORDER BY date DESC;Quand je suis en local, ça passe crème, mais à distance, j'ai cette erreur :
Error in query (3065): Expression #1 of ORDER BY clause is not in SELECT list, references column 'date' which is not in SELECT list; this is incompatible with DISTINCT
J'ai des idées pour y remédier :
- L'option un, pourrie, consiste à mettre ajouter une ligne " sql_mode=' ' " au fichier my.cnf , ce que je ne peux de toute façon pas faire parce que je suis en serveur mutualisé et que ça lève la sécurité liée au safe mode (= pas souhaitable).
- l'option deux consiste à laisser tomber le ORDER BY et à parcourir les tableaux PHP à l'envers, mais c'est fastidieux et ça ralentit le traitement.
Du coup, ma question est juste : pourquoi ? Pourquoi et depuis quand ORDER BY et DISTINCT sont incompatibles ? C'est quoi le concept ?
Si vous avez une idée trois pour un traitement simple et optimal, je prends quand même
Merci et bonne journée à vous !