更新和功能

时间:2010-07-13 00:26:50

标签: sql sql-server

我是学生,这是我作业的一部分。

我必须将两名员工的薪水更新10%......是否有这样的功能,或者我必须计算数字,只是更改数字,即

更新员工 设定工资= 10 其中工资= 51000

这是完整的问题:  选择EEO-1分类: 增加所有员工的工资: 选定的EEO-1分类减少10%。

EEO分类位于职务表中,薪水位于员工表中。我也需要以某种方式加入他们。它需要是一个单一的陈述......

由于

5 个答案:

答案 0 :(得分:1)

更新的秘诀是确保您可以先进行选择。

请专注于如何获取您想要选择的所有字段。

你的密钥将是Inner Join(毫无疑问,有人会给出完整答案,但我反对中断学习过程)。

接下来,您需要弄清楚如何计算工资。

幸运的是,你可以先在你的选择中做到这一点,以确保你走在正确的轨道上。

类似的东西:

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

一旦你很高兴选择看起来很好,你可以把它变成一个更新,很酷的是你可以实际更新一个连接的查询,只需抓住你选择的内连接和东西。

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

答案 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表之间有一些联系。我还假设Job Title是一个字符串而不是整数。希望这能为您提供所需语法的粗略轮廓。

答案 2 :(得分:1)

因为这是家庭作业,你需要知道聪明的alec答案。使用JOIN语法发布的答案是错误的,因为它是专有代码。正确的智能alec答案是使用标准SQL(最好是您选择的方言支持的标准SQL,例如SQL Server)。您还应该指出,ISO / IEC 11179数据元素名称标准要求可以有多个成员的集合的多个名称(例如,JobTitles而不是JobTitle),并查找已在企业中使用的已建立的集合名称(例如,人员而不是员工)。此外,如果使用单独的表对作业标题属性进行建模,那么工资也应该有自己的表(并且名为Payroll而不是Salaries):

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
              );

然后,企业需要过去工资和当前工资(例如能够提交纳税申报表),因此工资单可能是有效状态时态表,您需要找到最新的每个员工的状态......你知道,我越是想到这一点,我就越相信这个企业根本不存在。我的建议是假设这是一个技巧问题并拒绝回答它,直到他们至少修复了架构......或许在夏天询问实习,这样你就可以自己修复......

答案 3 :(得分: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

答案 4 :(得分:0)

既然是作业,我会给你一些提示:

您可以通过使工资等于自身+ 10%或乘以110%来更新工资

第二个表可以在where子句中寻址;提示:每个表中都需要有一个等价的字段。

EEo-1分类可以设置为等于参数。