前提・実現したいこと
SQL Serverで下記のようなテーブルを用意しています
- 月管理用テーブル
テーブル名:
→ tbMonth
フィールド名:
→ pk_MonthID([int]プライマリキー)
→ year([int]年の西暦数字が入る)
→ month([int]月の数字1~12が入る)
- 従業員管理用テーブル
テーブル名:
→ tbEmployee
フィールド名:
→ pk_EmployeeID([int]プライマリキー)
→ name([NVARCHAR(30)]従業員名が入る)
- 月毎の従業員管理用テーブル
テーブル名:
→ tbMonthEmployee
フィールド名:
→ pk_MonthEmployeeID([int]プライマリキー)
→ fk_tbMonthID([int]tbMonthのプライマリキーが入る)
→ fk_tbEmployeeID([int]tbEmployeeのプライマリキーが入る)
ここで、tbMonthEmployee(月毎の従業員管理用テーブル)にレコードを追加したいです。
月毎に従業員数分のレコードを作成したいのです。
例えば月が1~12で12レコード、従業員が10名いれば、120レコードを作りたいです。
ただ、既にこのtbMonthEmployeeにはいくつかのレコードが作成されています。
そのため、このテーブルに無いレコードのみを抽出して追加する必要があります。
どのようなSQLを書けばいいか教えていただけないでしょうか。
試したこと
SQLServer
1INSERT INTO tbMonthEmployee (fk_tbMonthID, fk_tbEmployeeID) 2 SELECT pk_MonthID, pk_EmployeeID 3 4FROM tbMonth, tbEmployee 5 6WHERE NOT EXISTS ( 7 SELECT * 8 FROM tbMonth, tbEmployee , tbMonthEmployee 9 WHERE pk_MonthID=fk_tbMonthID and 10 pk_EmployeeID=fk_tbEmployeeID 11);
結果:(0 行処理されました)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/22 05:29