我是学生,这是我作业的一部分。
我必须将两名员工的薪水更新10%......是否有这样的功能,或者我必须计算数字,只是更改数字,即
更新员工 设定工资= 10 其中工资= 51000
这是完整的问题: 选择EEO-1分类: 增加所有员工的工资: 选定的EEO-1分类减少10%。
EEO分类位于职务表中,薪水位于员工表中。我也需要以某种方式加入他们。它需要是一个单一的陈述......
由于
答案 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分类可以设置为等于参数。