2017-01-30 212 views
-2

我在計算此SQL語句時遇到了一些問題。我有三個表employee,jobjob type從最小和最大值中選擇多個表格形成多個表格

job type是參考表。它有工作的名稱,工作需要多長時間,以及該工作收取多少費用。

job記錄了哪個員工和日期執行的是什麼樣的工作。它鏈接到job typejobname

employee有僱員的名字,employee id。它鏈接到jobemployee id

我需要顯示所有員工的列表以及他們在給定年份中所做的最便宜和最昂貴的工作。

我想我可能必須有一個嵌入式選擇和幾個joins。也許一個union這個複雜性遠遠超出我的經驗。我甚至不知道該說實話。

+0

給你的表列細節,並詢問有什麼你嘗試過,請。 – jfneis

+0

如果您提供樣本數據和預期的輸出,會更好。 – GurV

+0

下面是該表的快速視圖: http://pastebin.com/RYaCFHia 每位員工都執行了三項工作。我還沒有嘗試過任何疑問,因爲我從來沒有真正確定如何去做。 – user2328273

回答

0

您應該在查詢中使用employee表作爲主表,這樣即使該員工與0個工作關聯,每個員工也會得到一行。然後使用jobjob_type表的外連接,按員工標識符分組,並使用作業表上的min()max()集合函數來選擇最小和最大作業成本(如果有)。

像這樣的事情應該幫助您入門:

select employee.employee_id , 
    employee.employee_name, 
    min(job_type.cost), 
    max(job_type.cost) 
from employee 
    left outer join job on job.employee_id = employee.employee_id 
    left outer join job_type on job_type.job_type_id = job.job_type_id 
group by employee.employee_id, 
    employee.employee_name 
+0

謝謝。這有很大幫助。我沒有那麼複雜的東西,所以我甚至不知道從哪裏開始的邏輯。 – user2328273

相關問題