Bonjour à tous,

J'ai un soucis avec une requête, il me semble que c'est simple, mais je bloque dessus depuis pas mal de temps, alors que la réponse est, je suis sûr, très simple !

Je vous donne ma table de test :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
CREATE TABLE IF NOT EXISTS `test_concours` (
  `id` int(11) NOT NULL auto_increment,
  `concours` varchar(255) NOT NULL,
  `score` int(11) NOT NULL,
  `nom` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
)
et les valeurs de test :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
INSERT INTO `test_concours` (`id`, `concours`, `score`, `nom`) VALUES 
(1, 'superconcours', 45, 'tommy'),
(2, 'superconcours', 56, 'bob'),
(3, 'superconcours', 89, 'tommy'),
(4, 'lo-cado', 52, 'tommy'),
(5, 'lo-cado', 85, 'bob'),
(6, 'cadomania', 39, 'bob'),
(7, 'superconcours', 33, 'peter'),
(8, 'cadomania', 45, 'peter'),
(9, 'cadomania', 69, 'bob'),
(10, 'megaprix', 59, 'tommy');
Je recherche à avoir le plus petit score, et le nom du participant ayant eu ce score, pour chaque concours.

Je devrais avoir ceci :

10 megaprix 59 tommy
4 lo-cado 52 tommy
7 superconcours 33 peter
6 cadomania 39 bob

Mais impossible de faire ça avec une requête non imbriquée (j'ai besoin d'une requête non imbriquée pour inclure des options de filtres).

Voici la requête que j'ai en ce moment, qui me donne pas vraiment les bons résultats (essayer avec MIN et MAX) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SELECT concours, id, score, nom  
FROM test_concours
GROUP BY concours 
HAVING score = MIN(score)
ORDER BY concours
J'ai bien sur cherché sur internet, mais rien de ce que j'ai pu essayer ne marche.

Merci pour votre aide sur ce problème !

Guildem