2011-10-13 38 views
0

我寫了一個WHERE語句,它以一個順序處理列名,但不是以相反順序。我不知道爲什麼,並且很好奇,如果有人能解釋。爲什麼Oracle中的自連接的WHERE語句中的字段名稱顛倒了?

下面的代碼工作。當我有WHERE e.emp_num = m.emp_manager時,代碼無法工作。

SELECT DECODE (e.emp_initial,null, e.emp_fname||' '|| e.emp_lname, 
     e.emp_fname ||' '|| e.emp_initial ||'. '|| e.emp_lname) AS Employee, 
     m.emp_fname ||' '|| m.emp_lname AS Manager 
    FROM hartmar.employee e, 
     hartmar.employee m 
    WHERE e.emp_manager = m.emp_num 
    ORDER BY e.emp_lname, e.emp_fname, e.emp_initial 
+0

什麼不起作用? – Randy

+0

在我的輸出不正確的代碼(WHERE e.emp_num = m.emp_manager)中,員工和經理列被顛倒過來。當我將其更改爲(WHERE e.emp_manager = m.emp_num)時,如預期的那樣,員工專欄有員工,管理員專欄有管理員。 – smiligrl

回答

0

您還需要交換表的別名交換列時..

所有在SELECT列表中的列需要對應(如名稱),以表你想成爲管理者VS員工。

換掉所有這些a。在一開始也爲正確的結果。

相關問題