Question sur sql server

strife154 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
Christounet Messages postés 1264 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,


voila je voudrais trouver la solution pour une requête sur sql server:

je possède 2 tables:
emp(#empno,ename,sal,deptno)
dept(#deptno,dname)

# pour un indiquer la clé

vous avez remarqué qu'ils sont relié grâce au champs deptno



ma question est:
je voudrais afficher le nom des employés les mieux payés de chaque département.
la seul solution que j'ai trouvé est:

select ename,max(sal),dname
from emp,dept
 where dept.deptno=emp.deptno
group by dname,ename;



mais voici le résultat que ça me donne

ENAME MAX(SAL) DNAME
---------- ---------- --------------
ADAMS 1100 RESEARCH
TURNER 1500 SALES
MILLER 1300 ACCOUNTING
JAMES 950 SALES
MARTIN 1250 SALES
KING 5000 ACCOUNTING
CLARK 2450 ACCOUNTING
SMITH 800 RESEARCH
WARD 1250 SALES
JONES 2975 RESEARCH
ALLEN 1600 SALES

ENAME MAX(SAL) DNAME
---------- ---------- --------------
SCOTT 3000 RESEARCH
FORD 3000 RESEARCH
BLAKE 2850 SALES


or puisque je n'ai que 3 département différent, j'ai besoin d'afficher 3 lignes chacun avec un departement et l'employé le mieux payé
j'insiste qu'il faut afficher nom de l'employé(ename), le salaire(sal), et le nom de departement (dname)



en espérant avoir bien expliqué
je vous remercie de bien vouloir m'aider et vous demande de me répondre le plus vite
c'est urgent

merci encore une fois
A voir également:

3 réponses

william7007 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   46
 
Bjr je ne sais pas trop mais essaye ça voir tu me met au courant

SELECT ename, sal, dname
FROM emp, dept
WHERE emp.deptno = emp.deptno
AND sal = (SELECT max(sal)  FROM emp)



cdlt.
0
strife
 
Nope :(
ca ne donne pas la bonne reponse
voila ce que ca donne
ENAME SAL DNAME
---------- ---------- --------------
KING 5000 ACCOUNTING
KING 5000 RESEARCH
KING 5000 SALES
KING 5000 OPERATIONS
0
Christounet Messages postés 1264 Date d'inscription   Statut Membre Dernière intervention   1 392
 
Bonjour,

Le code suivant devrait faire ce que tu veux
select deptno , dname ,
(select top 1 ename , sal from emp
where emp.deptno = dept.deptno
order by sal desc)
from dept;


A plus
0