2013-02-18 4 views
1

나는 테이블이 설정을 가지고 간체 다음 :저장 프로 시저를 삽입

각 사용자에 대해 휴일 유형별로 일별 테이블에 새 레코드를 추가하고 기본 금액을 삽입하십시오. 누군가가이 일을 도와하거나 올바른 방향으로 나를 도울 수 있다면 그래서 내가 저장 프로 시저와 경험가있어

Year  TypeId  UserId  Amount 
2013  1   1   20 
2013  2   1   4 
2013  3   1   15 
2013  1   2   20 
2013  2   2   4 
2013  3   2   15 

: 그래서 나는 이런 식으로 뭔가를 얻으려면. 어떤 도움이 많이 감사합니다 :)

+1

기본 금액은 어디에서 계산 되나요? –

+1

죄송합니다. 두 번째 테이블에서 입력란을 잊어 버렸습니다. –

답변

1
이 당신이 어떤 찾고있는 쿼리 수를 CROSS JOIN 사용한다

:

INSERT INTO Days 
SELECT Year(GetDate()) Year, 
    HT.Id TypeId, 
    U.Id UserId, 
    DefaultValue     
FROM Users U CROSS JOIN HolidayTypes HT 

을 그리고 여기 샘플 바이올린입니다 : 이러한 결과를 http://sqlfiddle.com/#!3/15164/1

: 따라와 y 업데이트 -

YEAR TYPEID USERID AMOUNT 
2013 1  1  20 
2013 2  1  10 
2013 3  1  5 
2013 1  2  20 
2013 2  2  10 
2013 3  2  5 

은 BTW - 바이올린을 만들 때 나는 다른 기본값을 사용 우리 금액은 귀하의 게시물에있는 금액과 일치합니다.

+2

'CROSS JOIN'을 명시 적으로 지정하는 것이 좋습니다. 그것은 의도를 명시 적으로 만든다. (우연한 교차 결합이라고 아무도 생각하지 않는다.) 그리고 나중에 쿼리가 편집되면 실수를 일으킬 가능성이 적다. – Pondlife

+0

두 사람이 동일하기 때문에 다른 JOIN과 필요할 때 일반적으로 CROSS JOIN을 쓰지만, 답장을 편집하여 더 명확하게 만드십시오 :) Thanks @ Pondlife! – sgeddes

+1

정확히 내가 무엇을 찾고 있었습니까. Thnx! –

관련 문제