显示名称,而不是实际的ID
问题描述:
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
答
Select T1.firstname, t1.lastname
from .....
只需选择你想看到或加入到具有他们
答
在阅读您的问题表中的值,我发现您的查询相当混乱,所以我重写了它在某种程度上我可以理解。如果我理解正确,您希望看到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
因为任何老师有多重认证并不需要出现多次。
由于没有人可能会猜测正确的字段名称。将“SELECT T_EMP_ID”更改为“SELECT *”,然后找到正在查找的正确字段名称。然后使用“SELECT [Field_Name]” –