Question sur sql server

strife154 Messages postés 1 Statut Membre -  
Christounet Messages postés 1272 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
Configuration: Windows Vista
Firefox 3.0.6

3 réponses

  1. william7007 Messages postés 344 Statut Membre 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
  2. 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
  3. Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   1 393
     
    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