Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/02/2011, 13h51   #1
Candidat au titre de Membre du Club
 
Inscription : septembre 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 29
Points : 11
Points : 11
Par défaut Aide pour requête de minimum.

J'aimerai savoir quelle est la requête qui me permet d'extraire les résultats des joueurs les plus faibles dans chaque groupe.

Voici ma table :


Table

Groupes | Joueurs |Résultats
--------------------------------
groupe 1 | joueur 2 | 11
--------------------------------
groupe 1 | joueur 3 | 13
--------------------------------
groupe 2 | joueur 1 | 9
--------------------------------
groupe 2 | joueur 2 | 10
--------------------------------
groupe 2 | joueur 3 | 13
--------------------------------
groupe 3 | joueur 1 | 11
--------------------------------
groupe 3 | joueur 2 | 15
--------------------------------
groupe 3 | joueur 3 | 10
--------------------------------
groupe 3 | joueur 4 | 12
--------------------------------

résultat attendus...

--------------------------------
groupe 1 | joueur 2 | 11
--------------------------------
groupe 2 | joueur 1 | 9
--------------------------------
groupe 3 | joueur 3 | 10
--------------------------------


NB: Groupes et Joueurs sont une clé composite.

Merci d'avance.
mustargus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2011, 15h26   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 990
Points : 18 241
Points : 18 241
Envoyer un message via MSN à CinePhil
Il faut grouper les données (GROUP BY) par groupe et chercher le plus petit résultat (MIN) puis récupérer l'identité du joueur en faisant une jointure de cette requête avec la table.

Tu essaies et tu reviens avec une tentative de requête ?
Il y a déjà eu plein d'exemples sur ce forum et les autres forums dédiés aux SGBD.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2011, 16h55   #3
Candidat au titre de Membre du Club
 
Inscription : septembre 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 29
Points : 11
Points : 11
Je ne suis pas très sûr de comprendre votre solution mais voici ce que j'ai fait, et ca marche :

1\ Requête : Query1


Code :
1
2
3
4
 
SELECT TABLE.Groupes, Min(TABLE.Resultats) AS MinOfResultats
FROM TABLE
GROUP BY TABLE.Groupes;
2\ requête final

Code :
1
2
3
 
SELECT TABLE.Groupes, TABLE.Joueurs, TABLE.Resultats
FROM TABLE INNER JOIN Query1 ON (TABLE.Resultats = Query1.MinOfResultats) AND (TABLE.Groupes = Query1.Groupes);
Cependant es-ce-que c'est possible de la faire dans une seule requête ?
mustargus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2011, 23h52   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 990
Points : 18 241
Points : 18 241
Envoyer un message via MSN à CinePhil
Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT t.Groupes, t.Joueurs, t.Resultats
FROM la_table t
INNER JOIN 
(
  SELECT Groupes, MIN(Resultats) AS resultat_mini
  FROM la_table
  GROUP BY Groupes
) tmp 
  ON tmp.Groupes = t.Groupes
  AND tmp.resultat_mini = t.Resultats
ORDER BY Groupes
Au passage, la coloration syntaxique de votre requête te fait remarquer que "table" est un mot réservé du langage SQL à ne pas utiliser comme nom de table.
Et en principe, on nomme les tables et les colonnes au singulier.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h41.


 
 
 
 
Partenaires

Hébergement Web