2013-11-24 137 views
1

Q1:加入子查詢

SELECT SUBSTR(o.first_name,1,1)||' '||o.last_name "NAME", 
    FROM employees o 
    WHERE o.salary > 
    (SELECT AVG(i.salary) 
    FROM employees i 
    WHERE i.department_id = 
    o.department_id) 

我有部門標識和部門名稱部門表||如何將其加入到此結果中以顯示子查詢和dep名稱的結果?

q2)在添加最後一行後會拋出一個錯誤:爲什麼?

SELECT SUBSTR(first_name, 1, 1) || ' ' || last_name "Employee Name", department_id "Department Id", to_char(NULL) "Department Name", to_char(NULL) " City" 
FROM employees 
UNION 
SELECT to_char(NULL) "Employee Name" , department_id "Department ID", department_name "Department Name", to_char(NULL)" City" 
FROM departments 
UNION 
SELECT to_char(NULL) "Employee Name" , to_char(NULL) "Department Id", to_char(NULL) "Department Name" ,to_char(NULL)"City" 
FROM locations 
+0

有關錯誤,請添加你所得到的錯誤。至於你的查詢,如果你添加你的表結構和一些示例數據,也許我們可以幫助你以更好的方式實現這一點。至於 –

+0

@Filipe:錯誤:ORA-01790:表達式必須與相應的表達式具有相同的數據類型..我想加入到q2中的表具有department_id,department_name .. – user3026370

+0

第一個我不知道如何處理獲得三列:名稱和工資(來自子查詢)以及來自其他表的名稱 – user3026370

回答

1

對於第一個查詢嘗試:

SELECT SUBSTR(o.first_name, 1, 1) || ' ' || o.last_name "NAME", 
    d.department_name "DEP NAME" 
FROM employees o 
INNER JOIN department d ON d.department_id = o.department_id 
WHERE o.salary > (
    SELECT AVG(i.salary) 
    FROM employees i 
    WHERE i.department_id = o.department_id 
    ) 

你的錯誤出現最有可能從具有to_char(null)department_id當這列不是CHAR。

只需使用null代替:

SELECT SUBSTR(first_name, 1, 1) || ' ' || last_name "Employee Name", 
    department_id "Department Id", 
    to_char(NULL) "Department Name", 
    to_char(NULL) " City" 
FROM employees  
UNION  
SELECT to_char(NULL) "Employee Name", 
    department_id "Department ID", 
    department_name "Department Name", 
    to_char(NULL) " City" 
FROM departments  
UNION  
SELECT to_char(NULL) "Employee Name", 
    NULL "Department Id",  -- Replace to_char(null) with NULL 
    to_char(NULL) "Department Name", 
    city_name "City" -- Add city_name column to get results different than NULL 
FROM locations 
+0

爲什麼需要'TO_CHAR'? –

+0

儘管錯誤消失了,但這並不是一個合乎邏輯的錯誤,因爲最後應該顯示城市名稱,並且列表中沒有任何.-- UPDATE:更正to_char(NULL)「城市」到城市「城市」。作品完美,謝謝! – user3026370

+0

@ PM77-1。我不確定他使用它的原因是什麼,我只是指出了最有可能給他的那個錯誤, –