2017-09-22 2 views
0

에 도달 I 다음 표PostgreSQL을, 제한 후 변경 값이

할인 주문

id | employee | 
---|----------| 
1 |1   | 
2 |2   | 
3 |1   | 
4 |3   | 
5 |3   | 
6 |1   | 
7 |1   | 
8 |1   | 
9 |1   | 

어딘가 다른 내가 직원 급여를 가지고 있습니다.

내가하고 싶은 것은 다음과 같습니다. 급여 값에서 "할인 주문 테이블"할인에 30 %> 1 행과 "테이블 X"와에 1 행을 삽입 -

을 :

직원이 할인 주문 테이블에 존재하는 경우

는 다음을 수행 employee_id 및 할인 값의 양.

-> "discounts orders 테이블에서 2 행"salary 값에서 30 % 할인하고 "table X"에 2 행을 employee_id 및 할인 값으로 삽입하십시오.

-> "discounts orders table"에서 3 행 "salary 값에서 30 % 할인하고"table X "에 3 행을 employee_id 및 할인 값으로 삽입하십시오.

-> "discounts orders table"의 4 행 salary 값에서 30 % 할인하고 "table X"에 employee_id 및 할인 값 (3 번 30 %는 급여) "discounts orders 테이블"에

->> 4 행의 4 번째 행이 10 % onyy 여야하며 나머지는 무시하십시오. (당신이 급여의 100 % 이상을 할인 할 수 없기 때문에) 직원 # 1 $ 1000 벌과 "할인 주문 테이블"에 10 개의 행이있는 경우

는 X 표는이

id | employee | discount_value | discounts_orders_id 
---|----------|----------------|-------------------- 
1 | 1  | 300   | 1 
2 | 1  | 300   | 3 
3 | 1  | 300   | 6 
4 | 1  | 100   | 7 
과 같아야합니다

수정 됨 :

일시적인 해결책을 발견했습니다.

insert into "table x" .... 
select (employee_salary * 0.30) from employee 
inner join discounts_orders .... 
limit 4 

는 I는 4 행 (급여 * 0.30)를 난 부질있는 항목의 양을 계산하도록 시도하고 인자를 결정하는 것이다

+0

지금까지 시도한 코드를 알려주세요. – AlexKoren

+0

안녕하세요. Alex 님, 게시물을 업데이트했습니다. 시간적 솔루션을 볼 수 있습니다. 더 나은 옵션이있을 것입니다. –

답변

0

(급여 * 0.10)으로 1 개 행을 업데이트 삽입 다음과 같은 경우 :

insert into "table x" .... 
select (employee_salary * 
    (CASE WHEN (SELECT COUNT(*) FROM discounts_orders as dior 
      WHERE dior.employee=employee.id 
        AND dior.id<=discounts_orders.id) < 4 
     THEN 0.30 
     ELSE 0.10 
     END)) from employee 
inner join discounts_orders .... 
limit 4