1

簡素化されたテーブルのセットアップは次のとおりです。

Table Users:       Table HolidayTypes:              Table Days:
  ID                       ID                           Year
  Name                TypeName (f.e. 3 types)          TypeID  
                        DefaultValue                   UserId  
                                                       Amount

今私が達成したいのは、次のことを行う毎年の初めに実行できるストアド プロシージャを作成することです。

ユーザーごとに、休日の種類ごとに Days テーブルに新しいレコードを追加し、既定の金額を挿入します。だから私はこのようなものを取得したい:

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

私はストアドプロシージャの経験がないので、誰かがこれを手伝ってくれたり、正しい方向に助けてくれたりしたら. どんな助けでも大歓迎です:)

4

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

これらの結果を生成します:

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

ところで-私はフィドルを構築するときに異なるデフォルト値を使用しました-それに応じて更新し、あなたの金額はあなたの投稿のものと一致します。

于 2013-02-18T21:02:01.997 に答える