2015-12-02 102 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因爲任何老師有多重認證並不需要出現多次。

相關問題