【发布时间】:2019-10-30 17:52:03
【问题描述】:
我正在使用 SQL。
任务是为每个项目(PROJ_EMP.PROJNO)写max(EMP.SAL)
我有 3 张桌子。
保存项目数据的表 PROJ:
PROJ.PROJNO | PROJ.NAME
------------+-------------
1 | PROJECT1
2 | PROJECT2
3 | PROJECT3
员工数据表 EMP:
EMP.EMPNO | EMP.NAME | EMP.SALARY
----------+----------+------------
1000 | name1 | 4000
1001 | name2 | 2000
1002 | name3 | 3000
1003 | name4 | 6000
1004 | name5 | 1000
还有用于将这些项目与员工联系起来的表 PROJ_EMP:
PROJ_EMP.EMPNO | PROJ_EMP.PROJNO
---------------+----------------
1000 | 1
1001 | 1
1002 | 2
1003 | 2
1004 | 3
我在开始的帖子中提到过:我正在尝试使用 where 子句中的相关子查询为每个项目编写 max(EMP.SAL),因此所需的结果应该是:
PROJ_EMP.PROJNO | EMP.EMPNO | EMP.SAL
----------------+-----------+---------
1 | 1000 | 4000
2 | 1003 | 6000
3 | 1004 | 1000
我没有任何工作结果,但是我的 SQL 查询已关闭以瞄准:
SELECT EMP.EMPNO, EMP.SAL, PROJ_EMP.PROJNO
FROM EMP, PROJ_EMP
WHERE EMP.EMPNO = PROJ_EMP.EMPNO
AND EMP.SAL = (SELECT MAX(EMP.SAL)
FROM EMP, PROJ_EMP p_e
WHERE EMP.EMPNO = PROJ_EMP.EMPNO
AND PROJ_EMP.PROJNO = p_e.PROJNO)
GROUP BY
PROJ_EMP.PROJNO, EMP.SAL, EMP.EMPNO
ORDER BY
PROJ_EMP.PROJNO, EMP.SAL DESC
结果并不像我预期的那样。你能帮助我吗?提前感谢您的任何帮助
【问题讨论】:
-
我会尝试重新设计一些查询,但即使使用此查询,也尝试为外部 PROJ_EMP 提供别名并在内部 WHERE 子句中明确指定它