• 締切済み

列の一部が追加できないクエリについて

現在社内の顧客管理をAccessで行おうとして、まずはAccess2003にてスタンドアロンで顧客管理システムを作成し、アップサイジングウィザードを使用してSQL Server Express Editionへテーブル情報をコピーし、テーブルのリンクにて接続する状態まで来たのですが、とあるクエリで新たにレコードを追加する際に一部の列の変更が出来ないと言った現象が発生しています。既に存在している情報については問題なく変更出来ます。テーブル情報をSQL Serverにコピーする以前(mdbの状態)では正常に追加出来ていました。 問題のクエリの構成ですが、 テーブルA、テーブルB、テーブルC、テーブルD共に顧客コード(KOKYAKU_CODE)を主キーにしており、 テーブルAの顧客コード、会社名 テーブルBの○○フラグ、△△フラグ テーブルCの××コード テーブルDの□□コード を表示するようなクエリとなります。 SQLビューでFROM部分を確認すると、 「FROM ((テーブルA INNER JOIN テーブルB ON テーブルA.KOKYAKU_CODE = テーブルB.KOKYAKU_CODE) INNER JOIN テーブルC ON テーブルA.KOKYAKU_CODE = テーブルC.KOKYAKU_CODE) INNER JOIN テーブルD ON テーブルA.KOKYAKU_CODE = テーブルD.KOKYAKU_CODE;」 となっています。 このうち、新規レコード追加時にテーブルB、テーブルC、テーブルDの情報の書き換えが出来ない状態です。 恐らくリレーションの設定がおかしい為にこの様な現象になっているのだとは思うのですが、mdbの状態(アップサイジングウィザード実行前)では問題ない事や、SQL Serverのダイヤグラム等が関係しているのかがよく分からずにいます。 すみませんが助言をお願い致します。

みんなの回答

  • tomo316
  • ベストアンサー率35% (51/142)
回答No.1

関連するQ&A

  • 複数テーブルの不一致クエリについて

    SQLで、下記selectを行いたいです。 テーブルA テーブルB テーブルC これら三つのテーブルには、同一のコードが振られています。 この三つのテーブルのひとつにでも、抜けているコードを抜き出したいです。 (テーブルAのコード=テーブルBのコード=テーブルCのコードになっていないコード) 例) テーブルAに入ってるコード(1.3.5) テーブルBに入っているコード(1.4.5) テーブルCに入っているコード(1.5.6) このとき、三つのテーブルにきちんと入っているコードは、1と5だけなので、それ以外のコードを抜き出す→3.4.6 これをSQLで行う場合、簡単なSQL文はありますでしょうか? 今、考えているのは、各テーブルすべてをinner joinしたviewを作成し(これにより三つとも入ってるコードの一覧ができる)、 そのviewと、テーブルA、テーブルB、テーブルCそれぞれをひとつづつleft joinして、不一致データを取り出す方法です。 でも、そうすると、viewを作成しなくてはいけず、また、SQLをテーブルの数分(今回は3回)投げなくてはいけなくて。。 もっと、単純にかけないものでしょうか? ご存知の方、教えてください。

  • Access クエリについて

    Accessのテーブル1に、フィールド「コード」「回数」があり、レコードとして A,32 B,20 C,13 ・・・というように、ランダムなコードと回数がセットされているとします。コードは主キーです。 このテーブル1を元にしたクエリで A,1 A,2 A,3 ・・・ A,32 B,1 B,2 ・・・ B,20 C,1 C,2 ・・・ C,13 というように、コードごとに「回数」と同じ数のレコードがクエリ上に生成されるようにしたいのですが、こういうことは出来るのでしょうか?出来ればSQLで回答いただけないでしょうか。

  • テーブルを結合

    テーブルの結合に関して質問します。 ネットなどでinner joinを使った複数のテーブル結合が参考として 書いてあったのですが(3つまで), 4つテーブルを結合する事は 出来るのでしょうか? A,B,CテーブルにはID,NAMEがあります。 DテーブルにはA,B,CテーブルのIDがあります。 参考サイトを見て3つのテーブルを結合するSQLが以下になります。 SELECT a.name, b.name, c.name FROM a INNER JOIN (b INNER JOIN c ON b.id = c.id) ON a.id = c.id よろしければアドバイスお願いします。

  • クエリで2つずつ取り出す方法について

    毎度お世話になっております。 WindowsXP、Access2003を使用しております。 以下のテーブル1があります。 [テーブル1] CODE   日付  A    20080101  A    20080102  A    20080103  B    20080101  C    20080101  C    20080103  C    20080104 CODEごとに、日付の若いものから2行ずつ、 1つしかないものは1行のみ抽出したいのです。 [希望する結果] CODE   日付  A    20080101  A    20080102  B    20080101  C    20080101  C    20080103 これはクエリで可能なのでしょうか。 ご教授よろしくお願いします。

  • アクセスの追加クエリについて

    二つのテーブル間(AとB)を追加クエリを使い AからレコードをBに追加することは出来たんですが、 逆にBからAにレコードを追加しようと選択クエリを追加クエリに変更しようとしたんですが、ウィザードの追加先テーブル名にAのテーブル名が表れないですがその理由が全く分からないので分かる方教えていただけませんか? AとBのレコード内のフィールドは同じです。 AからBにレコードを移行する処理としてマクロを使いアクションとして ・クエリを開く(これは追加クエリです) ・SQLの実行(上と同じクエリを削除クエリに変更し、そのSQL文をSOLステートメントに貼り付けました) 上の処理は問題なく出来たので逆のBからAへレコード移行処理のマクロを作ろうとしたのですが、追加クエリの追加先テーブルにテーブルAの名前が出てこないので困っています。こういったAからB。BからAという処理は追加クエリで出来ないのでしょうか?

  • ACCSESSのクエリについて教えてください

    すみません! SQL初心者なのですがクエリについておしえてください。 table1 id kigou 1 a 2 b 3 c 4 d 5 e table2 id kigou 1 a 2 b 3 cc 4 ee 上記の2テーブルよりkigouのc d eが含まれるデータを抽出して kigouの1桁目が同じもののidを合計する場合、どのような 構文になりますでしょうか。。 以下のように記載しましたが、その後どうすればよいかわかりません。 select * from table1 left join table2 on table1.id=table2.id where table1.kigou in ('c','d','e') or table2.kigou in ('c','d','e') そもそもアプローチの仕方が間違っているのでしょうか。。

  • JOINのネスト制限?

    基本的な問題かもしれませんが、SQLのJOINの使い方が判らないので教えて下さい。 SQLで A表とB表とC表をINNER JOINした表に対して、 D表をOUTER JOINした結果に対して、E表をINNER JOINしたいのですが、 SQL文で書くことは可能でしょうか? SELECT ((((cols FROM A INNER JOIN B ON --) INNER JOIN C ON --) OUTER JOIN D ON --) INNER JOIN E ON --) と単純に書くとネスト数のオーバーなのかエラーが出ます。 後ろの部分だとサブクエリーに対してJOINすればよいかもしれませんが、主ファイルに当る部分の場合はサブクエリーに切り出す方法が判りません。 よろしくお願いします。

  • アクセスのクエリで出来る事なのでしょうか?

    以下の様な処理がクエリで出来るものかの判断がつかず、また、出来るとしてもクエリの作り方が判りません。。。 [テーブルA] コード 品名  種類 1111  A    0 1111  A    1 1111  A    2 1111  A    3 2222  B    0 2222  B    1 2222  B    2 2222  B    3 2222  B    4 3333  C    0 3333  C    1 3333  C    2 3333  C    3 3333  C    4 3333  C    5 3333  C    6 以上の様なフィールド構成を持つテーブルです。 「コード」で管理される「品名」の持つ「種類」の列の最大値を、新しく追加した「在庫」列を持つテーブルBの「在庫」列に抽出して以下の様に同一「コード」内に全て書き込みたいと思っておりますが、クエリ作成の勉強を始めたばかりで、上記の様な複雑(?)なクエリの作り方が判りません。 ※簡単なクエリをデザインビューで作ったり、SQL ビューで簡単な改造が出来る位です。 [テーブルB](処理後) コード 品名  種類 在庫 1111  A    0   3 1111  A    1   3 1111  A    2   3 1111  A    3   3 2222  B    0   4 2222  B    1   4 2222  B    2   4 2222  B    3   4 2222  B    4   4 3333  C    0   6 3333  C    1   6 3333  C    2   6 3333  C    3   6 3333  C    4   6 3333  C    5   6 3333  C    6   6 尚、「種類」列の値は必ず0から順番に(012345・・・の様に)並ぶ規則となっております。 テーブルAに「在庫」列を追加挿入してから「種類」の最大値を書き込む方法でも、テーブルB(テーブルAをコピーして「種類」列を追加したテーブル)に書き込ませる方法でもどちらでも問題はありません。 どなたかご教示頂ければと思います。宜しくお願い致します。  

  • ACCESSクエリで複数テーブルの値の結合について

    現在、ACCESS2000で2つのテーブルの値を表示するクエリを作成中です。 テーブルは外部データよりインポートしています。 Aテーブル KEY1 | KEY2 | 値1 -------------------------- 00000001 | AAAAAAAA | 100 00000001 | BBBBBBBB | 200 00000002 | AAAAAAAA | 1000 Bテーブル KEY1 | KEY2 | 値1 -------------------------- 00000001 | AAAAAAAA | 500 00000002 | BBBBBBBB | 300 これを、 KEY1 | KEY2 | 値1 ------------------------------------------------ 00000001:00000001 | AAAAAAAA:AAAAAAAA | 100:500 ←(1) 00000001:NULL | BBBBBBBB:NULL | 200:NULL ←(2) 00000002:NULL | AAAAAAAA:NULL | 1000:NULL ←(3) NULL:00000002 | NULL:BBBBBBBB | NULL:300 ←(4) と表示したいのです。 INNER JOIN では、上記(1)しか表示されません。 また、LEFT JOIN では、(1)(2)(3)は表示されますが、(4)が表示されません。 SQLは下記です(INNER JOINを使用した場合) SELECT [Aテーブル.KEY1] & ":" & [Bテーブル.KEY1] AS KEY1, [Aテーブル.KEY2] & ":" & [Bテーブル.KEY2] AS KEY2, [Aテーブル.値1] & ":" & [Bテーブル.値1] AS 値1 FROM Aテーブル INNER JOIN Bテーブル ON ([Aテーブル].[KEY1]=[Bテーブル].[KEY1]) AND ([Aテーブル].[KEY2]=[Bテーブル].[KEY2]); どなかた教えてください。お願いします。

  • JOINの方法について

    毎度お世話になっております。 以下のテーブル1、テーブル2があります。 [テーブル1] CODE   1月  2月  A      10  10  C      30  30 [テーブル2] CODE   3月  4月  A      10  10  B      20  20  D      40  40 これを以下のようにくっつけたいのです。 [希望する結果] CODE   1月  2月  3月  4月  A      10  10  10  10  B             20  20  C      30  30  D             40  40 クエリ1(テーブル1 LEFT JOIN テーブル2とする)と、 クエリ2(テーブル2 LEFT JOIN テーブル1とする)を作り、 UNIONでくっつける方法を考え、希望した結果は得られましたが、 もっとスマートな方法(一つのクエリでできるような方法)が あればご教授ください。