iT邦幫忙

0

oracle LEFT OUTER JOIN 用法問題

各位大大好

最近遇到了一個問題

SELECT
emp.EMPLOYEE_ID,
emp.FIRST_NAME,
emp.DEPARTMENT_ID,
epo.NAME
FROM emp, epo,ecp

LEFT OUTER edo ON( epo.ID=edo.ID ) <加入這行 他會說找不到epo.ID 請問為什麼?

where epo.ID=ecp.ID

但是where 我又可以使用epo.ID去比對其他值呢? 是不是我哪裡寫錯了??

看更多先前的討論...收起先前的討論...
wonton iT邦高手 6 級 ‧ 2017-05-10 09:10:49 檢舉
你又 from 多個 table,又寫 join 的,建議要一致,也就是 from 多個 table,再 where 子句定義 table 的關聯,要嘛都使用 join 會比較好。

我認為 ecp 後面接 join,會以為是 ecp 要和 edo 關聯,所以才找不到 epo 的欄位,但我沒有測試過,所以只是猜的。
會不會是找不到 edo.ID ?? (不是 epo.ID)
我在試試看 可能要用join 就要統一用 join 不要多個table!!..

對 他上面是顯示 找不到 epo.id!! 我在試看看 謝謝各位大大的回答....
kucifang iT邦新手 5 級 ‧ 2017-05-11 08:38:41 檢舉
SELECT emp.EMPLOYEE_ID, emp.FIRST_NAME, emp.DEPARTMENT_ID, epo.NAME
FROM emp leftjoin edo on (edo.ID = emp.XXX)
leftjoin ecp on (edo.XXX = ecp.XXX)
where epo.ID = ecp.ID
應該改寫成這樣
LEFT OUTER edo edo2 ON( epo.ID=edo2 .ID )

給LEFT OUTER 的edo一個別名,如edo2,如上
不然你兩個edo 一樣,會不知道是要使用哪一個edo
謝謝各位大大 回答
各位大大回答的我會在試看看 謝謝!!!
昨天有點看太快,因為太像有點看錯
你這應該是鼎新hr系統
select *
from emp
left join epo on emp.ID = emp.ID
left join ecp on emp.ID = emp.ID
left join edo on epo.ID = emp.ID
where epo.ID=ecp.ID

FROM 一個資料表後再去JOIN其他三個資料表
emp應該是主索引
(我之前碰過的是這樣,但也不一定100%其他系統是這樣)
FROM emp必須要擺在前面
如edo on emp.ID = edo.ID

尚未有邦友回答

立即登入回答