2011-06-21 146 views
-1

我有以下佈局的數據庫:SQL連接查詢多個表

employees (person_name, street, city) 
works (person_name, company_name, salary) 
companies (company_name, city) 
manages (person_name, manager_name) 

我需要拿出一個查詢,讓我找到誰是賺取更多然後他們的經理的所有員工。我知道這涉及員工,工作和管理表格之間的一些非常強烈的聯繫,而我無法得到一個能夠工作的人。有人能幫助我,並解釋如何獲得解決方案?

+0

看起來像一個作業問題 – Balanivash

+1

http://en.wikipedia.org/wiki/Join_(SQL) – Ruben

回答

1
SELECT w.person_name 
FROM works w 
    INNER JOIN manages m 
     ON m.person_name = w.person_name 
      INNER JOIN works wManager 
       ON wManager.person_name = m.manager_name 
WHERE w.salary > wManager.salary 
2

首先,名稱不是一個很好的關鍵。

答案的關鍵是您可以多次連接到一個表格(請記住別名表以便您可以區分您想要引用的表格)。

在沒有爲您編寫查詢的情況下,這意味着您應該選擇員工,通過Works和Companies加入(這會爲您提供員工薪水)。這應該通過Manages加入,然後加入員工以獲取您的經理詳細信息。這個版本的員工可以第二次加入Works,以獲得經理薪水。然後,只需比較WHERE子句中的薪水即可。