[RESOLU] DISTINCT & ORDER BY incompatibles ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] DISTINCT & ORDER BY incompatibles ?

Re: [RESOLU] DISTINCT & ORDER BY incompatibles ?

par Reka » 19 sept. 2018, 16:26

Ca va, j'ai trouvé une solution plus intelligente

Code : Tout sélectionner

SELECT YEAR(date) AS year FROM articles WHERE id_categories = 2 AND statut = 1 GROUP BY year ORDER BY year DESC
Merci ;)

DISTINCT & ORDER BY incompatibles ?

par Reka » 19 sept. 2018, 15:33

Bonjour à tous,

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;
(pas de panique, j'ai mis des ? / :id_categories trucmuches orientés sécurité en ligne, j'ai juste simplifié la requête ici pour plus de lisibilité)


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 !