我是一名学生,这是我功课的一部分。更新和功能
我有10%至更新两个雇员的工资......是有一个功能或做我要计算的数字,只是改变数,即
更新员工 一套工资= 10 哪里工资= 51000
这是整个问题: 选择一个EEO-1等级: 增加所有员工的工资有: 10%选择EEO-1的分类。
EEO分类位于职位表中,而薪资位于员工表中。我也需要以某种方式加入他们。它需要一个单独的语句...
感谢
我是一名学生,这是我功课的一部分。更新和功能
我有10%至更新两个雇员的工资......是有一个功能或做我要计算的数字,只是改变数,即
更新员工 一套工资= 10 哪里工资= 51000
这是整个问题: 选择一个EEO-1等级: 增加所有员工的工资有: 10%选择EEO-1的分类。
EEO分类位于职位表中,而薪资位于员工表中。我也需要以某种方式加入他们。它需要一个单独的语句...
感谢
由于这是作业,您需要知道智能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
);
话又说回来,企业将需要过去的工资以及目前的工资(例如能够申报纳税申报表),因此工资单可能是一个有效状态的时间表,您需要为每位员工查找最新的状态......您知道,我对此的看法越多我相信这个企业根本就不存在。我的建议是,假设这是一个技巧性的问题,并拒绝回答,直到他们至少修复了这个模式为止......也许在夏季时询问有关实习的事情,这样你就可以自己修复它...
与更新的秘诀是要确保你可以做选择第一。
因此,请专注于如何获得您想要选择的所有字段。
你的钥匙将是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*
喜欢的东西:
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
既然是家庭作业,我给你一些提示:
您可以使它等于它本身+ 10%更新工资或乘由110%
第二个表可以在where子句中解决;提示:每个表中都需要有一个等同的字段。
EEo-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表之间有一些联系。我还假设职位是一个字符串,而不是一个整数。希望这给你粗略的语法你需要的大纲。
诱惑downvote由于过度的暴躁,但我真的不能看到任何错误足以证明downvote的理由。但我想 - 这足够吗? – MJB 2010-07-13 15:46:50
@MJB - 随时倒下:如果我得到三个人,我可以删除答案并赢得徽章! – onedaywhen 2010-07-14 07:24:43