Se connecter avec
S'enregistrer | Connectez-vous

[Résolu] Requête SQL

Dernière réponse : dans Programmation

Bonjour,

Je cherche à réaliser une requête avec Access mais je n'y arrive pas

Ci joint ma table:


Je cherche a avoir le nom de tous les employés gagnant plus que tous ceux du service 30

J'ai fait ça :

SELECT Employes.NomEmp, Employes.SalaireEmp, Employes.ServiceEmp,
MAX (Employes.SalaireEmp) AS SalaireMax
FROM Employes
WHERE ((Employes.ServiceEmp)=30);

et ça :

SELECT Employes.NomEmp, Employes.SalaireEmp, [Employes_1].[Expr1] AS SalaireMax, Employes_1.ServiceEmp
FROM Employes, Employes AS Employes_1
WHERE ((Employes.SalaireEmp)>[SalaireMax]) AND (([Employes_1].[Expr1])=Max([Employes_1].[SalaireEmp]) AND ((Employes_1.ServiceEmp)=30));


Ce que j'essaye de faire c'est avoir une liste du service 30, sortir la valeur max et ensuite la comparer au reste de la table mais pour l'instant ça marche pas trop

Merci
Djipss

Autres pages sur : resolu requete sql

Lassé par la pub ? Créez un compte

Salut, Djipss

Tu peux faire cela en deux requêtes comme tu as essayé de le faire :
=> 1ère requête (nommée MaxService30) :
SELECT MAX (Employes.SalaireEmp) AS SalaireMax
FROM Employes
WHERE ((Employes.ServiceEmp)=30)

=> 2ème requête utilisant la 1ère :
SELECT Employes.NomEmp, Employes.SalaireEmp, Employes.ServiceEmp
FROM Employes, MaxService30
WHERE ((Employes.SalaireEmp)>MaxService30.SalaireMax)

En utilisant les fonctions de regroupement de domaine, tu peux même te passer de la 1ère requête :
SELECT Employes.NomEmp, Employes.SalaireEmp, Employes.ServiceEmp
FROM Employes
WHERE ((Employes.SalaireEmp)>DMax("SalaireEmp","Employes","ServiceEmp
=30"))

Bonne continuation
Lassé par la pub ? Créez un compte
Tom's guide dans le monde