[RESOLU] Selectionnez valeurs avec MAX() et DISTINCT

Petit nouveau ! | 7 Messages

04 mars 2021, 10:17

Bonjour tout le monde,
je travaille avec PHP et Mysql,

Voici ma table :
Colonne1 Colonne2 Colonne3
valeur 156 abc
valeur 157 xx
valeur1 54 re
valeur1 43 bv
valeur1 76 or
valeur2 65 cv

Ce que je souhaiterais, pour chaque valeur unique dans la Colonne1, avoir la plus haute valeur Colonne2.
Voici ce que je souhaite comme résultats :
Colonne1 Colonne2
valeur 157
valeur1 76
valeur2 65

J'ai essaye pas mal de solution sans résultats! Comme 'SELECT DISTINCT request_number, MAX(time) FROM answers' OU 'SELECT DISTINCT request_number,time FROM answers GROUP BY MAX(time)'

Soit, il y a une erreur de formulation de requete, soit cette erreur : 'In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column ; this is incompatible with sql_mode=only_full_group_by'

Merci pour votre aide,
Cordialement

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 mars 2021, 12:12

Salutations !

Tu es sur la bonne voie et il faut effectivement utiliser le group by quand tu utilises une fonction de groupe comme MAX(), mais tu ne l'utilises pas sur la bonne colonne. Dans le GROUP BY, il te faut liste toutes les colonnes retournées par ton select qui ne sont pas agrégée par une fonction de groupe :) (d'où ton message d'erreur)

SELECT request_number, MAX(time)
FROM answers
GROUP BY request_number

A noter : il n'y a pas besoin de distinct dans ce cas, le group by effectuant déjà cette distinction :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...