2013-05-09 82 views
1

我在問這個問題之前已經搜索過這個網站,但是並沒有發現有關的東西。我確信這是一個荒謬的基本錯誤,我只從0個計算機背景研究Oracle SQL約4個月。我計劃在本月底結束1z0-051,以便遍歷所有章節。在本條款中,我試圖找到薪水高於最低薪酬職位(CLERK)平均工資的僱員的姓名,職位,薪水,部門和城市。我不斷收到Missing Keyword?JOIN語法中缺少關鍵字

SELECT e.first_name, 
    e.last_name, 
    j.job_title, 
    e.salary, 
    d.department_name, 
    l.city 
FROM employees e 
JOIN jobs j 
WHERE salary > 
    (SELECT AVG(salary) FROM employees WHERE job_id LIKE '%CLERK%' 
) ON e.job_id = j.job_id 
JOIN departments d 
ON e.department_id = d.department_id 
JOIN locations l 
ON d.location_id = l.location_id 
ORDER BY salary 
+2

where子句通常在連接後出現。 – HLGEM 2013-05-09 20:49:31

回答

2

你有JOIN - WHERE - ON序列是錯誤的。

應該是這樣的(假設WHERE您的加盟條件的一部分):

FROM employees e 
JOIN jobs j ON e.job_id = j.job_id 
.... 
.... 
WHERE e.salary > 
    (SELECT AVG(salary) FROM employees WHERE job_id LIKE '%CLERK%') 
ORDER BY ... 
+0

非常感謝 – 2013-05-09 21:46:07

0

一個where條款後,你不能有一個join條款

0

FROM僱員e JOIN工作j < <你錯過了員工和工作之間的「ON」條款>> WHERE工資

此外,在所有JOIN後移動WHERE子句。

select 
     fields 
    from 
     table 
     join 
      join "ON" clause 
     join 
      join "ON" clause 
    where 
     some condition 
    group by 
     whatever grouping if aggregates 
    order by 
     if you want something certain order.