SELECT T_EMP_ID
FROM TEACHER T1
WHERE NOT EXISTS
(SELECT C1.CERT_ID
FROM CERTIFICATION C1
WHERE NOT EXISTS
(SELECT TEI.CERT_ID
FROM TEACHER_CERT_INT TEI
WHERE C1.CERT_ID = TEI.CERT_ID
AND T1.T_EMP_ID = TEI.T_EMP_ID
AND sysdate >= TEI.DATE_EFFECTIVE
AND sysdate <= TEI.DATE_EXPIRES));
我有这个代码,它应该返回一个 每个记录(每条记录)的当前(有效和未过期)认证的所有教师名单 表示CERTIFICATION表中列出的某种类型的教师证明/认可。当我在Oracle中运行它时,它返回应该显示的一行,但不显示EMPLOYEE名称,而是显示EMP_ID。我如何才能正常工作,谢谢。
答案 0 :(得分:0)
Select T1.firstname, t1.lastname
from .....
只需选择要查看的值或加入包含它们的表
即可答案 1 :(得分:0)
在阅读你的问题时,我发现你的查询相当混乱,所以我以我能理解的方式重写了它。如果我理解正确,您希望在TEACHER_CERT_INT
表中查看具有有效认证的教师列表,这些教师也存在于CERTIFICATION
表中。假设员工的姓名在TEACHER
表中并且名为EMPLOYEE
,则以下代码应该这样做。
SELECT DISTINCT T1.EMPLOYEE
FROM TEACHER T1 INNER JOIN
TEACHER_CERT_INT TEI ON T1.T_EMP_ID = TEI.T_EMP_ID INNER JOIN
CERTIFICATION C1 ON C1.CERT_ID = TEI.CERT_ID
WHERE sysdate >= TEI.DATE_EFFECTIVE AND sysdate <= TEI.DATE_EXPIRES
我使用DISTINCT
,因为任何拥有多项认证的教师都不需要多次出现。