2014-02-19 52 views
0

過濾查詢我有以下查詢Oracle中

select a.empid, a.age, a.city, b.name 
    join supervisor b on a.supervisorid = b.empid 

有機會的是,在「監」的表項可以不存在在「僱員」表作爲一個Employee 形成上述查詢後,我想使 「b.supervisorname」 字段爲 「零」,如果 「b.supervisorid」 不 「a.empid」 列

Employee表:

EMPID - 年齡 - 城市 - -SUPERVISOR

1--12 - A - 123

2--21 - B - 1

3--23 - C - 2

主管表:

SUPERVISOR表

EMPID - NAME

123 - ABC

1 - EFG

2- HIJ

OUTPUT:

EMPID - AGE - CITY - NAME

1- -12 - A - null

2--21 - B - ABC

3--23 - C - EFG

我不想使用,

select a.empid, a.age, a.city, b.name 
    from employee a 
    join supervisor b on a.supervisorid = 
         (select empid 
          from supervisor 
         where empid in (select empid from employee)) 

因爲這種查詢的影響性能

有沒有什麼快捷方式做它?

回答

1

您應該總是使用顯式連接來避免性能問題。而在一般情況它有助於定義查詢

一個FROM條款下面的查詢應爲你工作:

select 
    e.empid, 
    e.age, 
    e.city, 
    s.name 
FROM 
    employee e 
    LEFT OUTER JOIN 
     supervisor s 
     on e.supervisor = s.empid 
+0

這是正確的方式,做! +1刪除我的! –

+0

@OracleUser我當然很欣賞+1和評論謝謝!如果你在我之前發佈了一個LEFT JOIN,那麼我會簡單地向你提供:) – MonkeyZeus