Requête sur 2 tables, avec ordre

Résolu
antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 février 2011 - 23 mai 2007 à 11:33
antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 février 2011 - 23 mai 2007 à 11:58
J'ai 2 tables. 1 tables "versements" (NumSalarie, MontantVers, NumEntreprise) et une table "salariés"(NumSalarie, Nom).
Ma requête consiste à récupérer les 3 Nom_salariés qui versent le + d'argent pour l'entreprise num1.
(J'ai simplifié).
J'ai déjà fait la requête qui me rend les "NumSalarie" dans l'ordre croissant de leur versement :
SELECT VERSEMENTS.NumSalarie, Sum(VERSEMENTS.MontantVers)
FROM VERSEMENTS
WHERE (((VERSEMENTS.NumEntreprise)='1'))
GROUP BY VERSEMENTS.NumSalarie
ORDER BY Sum(VERSEMENTS.MontantVers) DESC;
explication :le GROUP BY permet d'avoir le total des versements pour chaque salariés ; le ORDER BY permet de les classer par ordre du + gros "verseur" au - gros.
question : comment, dans la même requête, récupérer le nom de chacun des salariés, en gardant l'ordre.

J'ai effectué une requête mais celle-ci ne garde pas l'ordre du + grand au + petit, il me rend les noms par ordre alphabétique :
SELECT nom
FROM salaries
WHERE salaries.NumSalarie in
(SELECT VERSEMENTS.NumSalarie, Sum(VERSEMENTS.MontantVers)
FROM VERSEMENTS
WHERE (((VERSEMENTS.NumEntreprise)='1'))
GROUP BY VERSEMENTS.NumSalarie
ORDER BY Sum(VERSEMENTS.MontantVers) DESC);

Est-ce que quelqu'un aurait la solution à mon problème ?

6 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 mai 2007 à 11:46
Oups j'ai oublie de remettre le NumEntreprise en texte.
Mais d'ailleurs quel est l'intérêt de mettre NumEntreprise en texte???

SELECT VERSEMENTS.NumSalarie, Sum(VERSEMENTS.MontantVers) AS SommeDeMontantVers, Salarie.Nom
FROM Salarie INNER JOIN VERSEMENTS ON Salarie.NumSalarie = VERSEMENTS.NumSalarie
WHERE (((VERSEMENTS.NumEntreprise)='1'))
GROUP BY VERSEMENTS.NumSalarie, Salarie.Nom
ORDER BY Sum(VERSEMENTS.MontantVers) DESC;

@+: Ju£i?n
Pensez: Réponse acceptée
3
Big200148 Messages postés 149 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 23 juillet 2009
23 mai 2007 à 11:43
essai ca

SELECT VERSEMENTS.NumSalarie, Sum(VERSEMENTS.MontantVers)
FROM VERSEMENTS
WHERE (((VERSEMENTS.NumEntreprise)='1'))
GROUP BY VERSEMENTS.NumSalarie
HAVING COUNT(VERSEMENTS.NumSalarie)=3
ORDER BY Sum(VERSEMENTS.MontantVers) DESC
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 mai 2007 à 11:44
Salut,
Cette requête semble faire ce que tu souhiates.

SELECT VERSEMENTS.NumSalarie, Sum(VERSEMENTS.MontantVers) AS SommeDeMontantVers, Salarie.Nom
FROM Salarie INNER JOIN VERSEMENTS ON Salarie.NumSalarie = VERSEMENTS.NumSalarie
WHERE (((VERSEMENTS.NumEntreprise)=1))
GROUP BY VERSEMENTS.NumSalarie, Salarie.Nom
ORDER BY Sum(VERSEMENTS.MontantVers) DESC;

@+: Ju£i?n
Pensez: Réponse acceptée
0
antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 février 2011 3
23 mai 2007 à 11:50
NumEntreprise sera bien entendu un paramêtre... j'ai mis en texte uniquement pour tester... je teste et je vous tiens au courant si c'est bon...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 février 2011 3
23 mai 2007 à 11:53
Big200148 >> je ne pense pas que ta proposition fonctionne car, à 1ère vue, tu ne récupères pas le NOM du salariés alors que c'est là mon problème : récupérer les nom des salariés en gardant l'ordre du "select" concernant les versements... je me suis bien fait comprendre ?? :-/
0
antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 février 2011 3
23 mai 2007 à 11:58
Merci beaucoup JRIVET... ça roule comme sur des roulettes  thanks !!!
0
Rejoignez-nous