2010-07-13 2 views
1

나는 학생이며, 이것은 숙제의 일부입니다.업데이트 및 기능

는 그하는 기능이있다 ... 10 %이 명 직원의 급여를 업데이트 할 필요가 또는 내가 수치를 계산하고 단지 숫자가

갱신 직원 설정 임금 = 10 어디 즉, 변경해야 할 임금 = 51000

이 전체 질문 : 증가가 모든 직원 급여 : 10 % 선택된 EEO-1 분류 EEO-1 분류를 ​​선택합니다.

EEO 분류는 직책 표에 있고 급여는 직원 표에 있습니다. 어떻게 든 그들과 합류해야합니다. 그것은 ... 하나의 문이어야 업데이트 비밀은 당신이 선택 첫째을 할 수 있는지 확인하는 것입니다

감사

답변

1

숙제이기 때문에 스마트 알렉 답변을 알아야합니다.JOIN 구문을 사용하여 게시 된 답변은 독점 코드이므로 잘못되었습니다. 올바른 스마트 알렉 답변은 표준 SQL (선호하는 방언, 예를 들어 SQL Server)을 사용하는 것입니다. 또한 데이터 요소 이름에 대한 ISO/IEC 11179 표준은 하나 이상의 구성원 (예 : JobTitle보다는 JobTitle)을 가질 수있는 set에 대한 복수 이름을 필요로하며 이미 기업에서 사용 된 기존의 수집 이름을 찾습니다 (예 : Personnel 직원보다는). 그럼 다시, 기업이 과거 임금 필요뿐만 아니라 것

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 과도한 snarkiness로 인해,하지만 난 정말 downvote을 정당화하기에 충분히 잘못된 것을 볼 수 없습니다. 하지만 나는 그걸로 충분하니? – MJB

+0

@MJB - 자유롭게 downvote : 3 명을 얻으면 답을 삭제하고 배지를 획득 할 수 있습니다! – onedaywhen

1

할 필요가있다.

그래서 선택하려는 모든 입력란을 가져 오는 방법에 중점을 둡니다.

열쇠가 Inner Join 일 것입니다. 의심 할 여지없이 누군가가 완전한 대답을하지만 나는 학습 과정을 방해하지 않습니다.

다음으로 임금을 계산하는 방법을 알아야합니다.

행운의 일은 선택에서 처음부터 올바른 방향으로 진행될 수 있는지입니다.

뭔가처럼 : 당신이 선택은 당신이 UPDATE으로 바꿀 수 있고, 멋진 일이 실제로 조인 쿼리를 업데이트하고 바로 잡을 수있는 좋은 보이는 것을 만족하면

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* 
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' 

여기에 스키마에 대한 가정을해야했습니다. 직원 테이블과 직책 테이블 사이에 링크가 있다고 가정합니다. 또한 Job Title이 정수가 아닌 문자열이라고 가정합니다. 다행히도 필요한 구문의 대략적인 개요를 제공합니다.