質問: 多側のない1側レコードに多を入力するには こんにちは、いつもお世話になっています。 ウィンドウズ7 access2010 質問なのですが、 1対多でリレーションされたテーブルレコードに、 1の中に多が一つもないレコードに対し、共通のレコードを追加することができますか? 以下例 1側テーブル 行コード(オートナンバー):1 行:あいうえお 行コード(オートナンバー):2 行:かきくけこ 行コード(オートナンバー):3 行:さしすせそ 中略 コード:10 行:わをん 多側テーブル 分類コード(オートナンバー):1 行コード:1 分類:母音 分類コード(オートナンバー):2 行コード:3 分類:子音 分類コード(オートナンバー):3 行コード:7 分類:子音 この場合、 1側テーブルの行コードが2、4~6、8~10の多側が入力されていません。 この未入力の多側テーブルに共通のレコードを入力したいのです。 ただし、共通と言っても、分類コードはオートナンバーで、 行コードは1側のテーブルに対応した数字を入力してほしいです。 おそらく、クエリで多側のない1側を抽出することはできると思います。 しかし、多側のない1側に一斉に?楽に入力するには何かいい方法がないでしょうか。 説明不足でしたらすみません、補足いたします。 すみませんが、どなたかご教授お願いいたします。
回答: #2です > この場合、q2分類のパラメータの入力を求められ・・・ 多側のテーブルにフィールド「分類」が存在した時、入力は求められないと思います。 q2.分類 が、ドットなしの q2分類 になっていたりしませんでしょうか。 > q1やq2というのは何を示しているのですか? これは、一旦 q1 とかに名前を置き換えましょうか・・・という程度です。 ★★ as q1 で、q1 と書いたら ★★ のことですよ。 insert into ▲▲ ( 行コード, 分類 ) select q1.行コード, "子音" from ★★ as q1 left join ▲▲ as q2 on q1.行コード=q2.行コード where q2.行コード is null; これを q1 / q2 を使わないで記述したとすると insert into ▲▲ ( 行コード, 分類 ) select ★★.行コード, "子音" from ★★ left join ▲▲ on ★★.行コード=▲▲.行コード where ▲▲.行コード is null; のようになってしまいます。 これはこれで動作に違いはありませんが、書く側/読む側からするとイメージしにくい・・・ また、実際のテーブル名に書き換える箇所が多く存在することになります。 修正個所を少なく、イメージしやすいように短い文字列に置換えてってことを私はします。 ★★ / ▲▲ が、例えば、tひらがな行 / tひらがな分類 という名称だったとしたら insert into tひらがな分類 ( 行コード, 分類 ) select tひらがな行.行コード, "子音" from tひらがな行 left join tひらがな分類 on tひらがな行.行コード= tひらがな分類.行コード where tひらがな分類.行コード is null; 雰囲気です。 動作に違いはありません。 今回 q1 / q2 を使用しましたが、 t1 / t2 でも、ta / tb でも・・・・