2010-07-13 95 views
1

我是一名學生,這是我功課的一部分。更新和功能

我有10%至更新兩個僱員的工資......是有一個功能或做我要計算的數字,只是改變數,即

更新員工 一套工資= 10 哪裏工資= 51000

這是整個問題: 選擇一個EEO-1等級: 增加所有員工的工資有: 10%選擇EEO-1的分類。

EEO分類位於職位表中,而薪資位於員工表中。我也需要以某種方式加入他們。它需要一個單獨的語句...

感謝

回答

1

由於這是作業,您需要知道智能alec答案。使用JOIN語法發佈的答案是錯誤的,因爲它是專有代碼。正確的智能alec答案是使用標準SQL(最好是您選擇的方言支持的標準SQL,例如SQL Server)。您還應該指出,數據元素名稱的ISO/IEC 11179標準要求可能有多個成員(如JobTitles而不是JobTitle)的集合的複數名稱,並查找已在企業中使用的已建立集合名稱(例如人員而不是員工)。此外,如果職位屬性是使用一個單獨的表建模,然後薪水應該有自己的表太(並命名爲工資,而不是工資):

UPDATE Payroll 
    SET Wage = Wage * 1.1 
WHERE EXISTS (
       SELECT * 
       FROM Employees AS E1 
         INNER JOIN JobTitles AS J1 
         ON E1.employee_number = J1.employee_number 
          AND J1.EEO_classification = 'EEO-1' 
       WHERE E1.employee_number = Payroll.employee_number 
      ); 

話又說回來,企業將需要過去的工資以及目前的工資(例如能夠申報納稅申報表),因此工資單可能是一個有效狀態的時間表,您需要爲每位員工查找最新的狀態......您知道,我對此的看法越多我相信這個企業根本就不存在。我的建議是,假設這是一個技巧性的問題,並拒絕回答,直到他們至少修復了這個模式爲止......也許在夏季時詢問有關實習的事情,這樣你就可以自己修復它...

+0

誘惑downvote由於過度的暴躁,但我真的不能看到任何錯誤足以證明downvote的理由。但我想 - 這足夠嗎? – MJB 2010-07-13 15:46:50

+0

@MJB - 隨時倒下:如果我得到三個人,我可以刪除答案並贏得徽章! – onedaywhen 2010-07-14 07:24:43

1

與更新的祕訣是要確保你可以做選擇第一。

因此,請專注於如何獲得您想要選擇的所有字段。

你的鑰匙將是Inner Join(毫無疑問,有人會給出一個完整的答案,但我反對中斷學習過程)。

接下來,您需要計算出如何計算工資。

幸運的是,你可以在你的選擇首先做到這一點,以確保你在正確的軌道上。

喜歡的東西:

SELECT *, (wage*1.1) as newWage FROM Employee 
*INNER JOIN STUFF* 
WHERE *CONDITION STUFF (EEO-1 etc.)* 

一旦你感到高興的是選擇看起來不錯,你可以把它變成一個UPDATE和很酷的事情是,你實際上可以更新連接查詢,只是抓住你的選擇內部聯接和哪裏東西。

UPDATE Employee 
SET Salary.Wage = (wage*1.1) 
FROM Employee 
* INNER JOIN STUFF* 
WHERE *CONDITION STUFF* 
0

喜歡的東西:

declare @classification varchar(100) 
set @classification = '<your value>' 

update Employee set Wage = Wage *1.10 
join JobTitle on Employee.JobTitleId = JobTitle.JobTitleId 
where JobTitle.[EEO-1 Classification] = @classification 
0

既然是家庭作業,我給你一些提示:

您可以使它等於它本身+ 10%更新工資或乘由110%

第二個表可以在where子句中解決;提示:每個表中都需要有一個等同的字段。

EEo-1分類可以設置爲等於參數。

1

你需要的是使用INNER JOIN的UPDATE語句。

UPDATE Employee 
SET Wage = e.Wage * 1.10 
FROM Employee as e 
INNER JOIN JobTitle as jt 
    ON jt.[id] = e.[jobId] 
Where jt.Title = 'EEO-1' 

我不得不在這裏對你的模式做一些假設,我假設Employee和Job Title表之間有一些聯繫。我還假設職位是一個字符串,而不是一個整數。希望這給你粗略的語法你需要的大綱。