显示名称,而非实际ID

时间:2015-12-02 18:17:37

标签: sql oracle

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。我如何才能正常工作,谢谢。

2 个答案:

答案 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,因为任何拥有多项认证的教师都不需要多次出现。