2015-12-02 62 views
0
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。我如何得到这个正常工作,谢谢。显示名称,而不是实际的ID

+2

由于没有人可能会猜测正确的字段名称。将“SELECT T_EMP_ID”更改为“SELECT *”,然后找到正在查找的正确字段名称。然后使用“SELECT [Field_Name]” –

回答

0
Select T1.firstname, t1.lastname 
from ..... 

只需选择你想看到或加入到具有他们

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因为任何老师有多重认证并不需要出现多次。

相关问题