アクセス2003でテーブルを分割させる方法

このQ&Aのポイント
  • アクセス2003でクエリーなどを利用してテーブルを分割させる方法について教えてください。
  • 生徒番号と講座番号を持つテーブルを講座の種類ごとに分割したいと思っていますが、方法がわかりません。
  • クエリーを使用して講座の種類が多い場合や実施回数が複数回の場合も効率的にデータを分割する方法について教えてください。
回答を見る
  • ベストアンサー

アクセスでテーブルを分割させる方法を教えてください

アクセス2003でクエリーなどを利用してテーブルを分割させる方法を教えてください。 テーブルは次のような構造になっています。  生徒番号 講座1 講座2 講座3 講座4 講座5 講座6 ‥ 講座40  1101  1  0   0  1   1  0 0  1102  0  1   0  1   0  1    0    ・    ・    ・ 上記の表を下記の用に変更したいのですが方法がわかりません。 講座の種類が少なければ1件1件やるのですが、種類が多いことと実施する回数が複数回なのでクエリで実施したいと思っています。 生徒番号 講座番号 受講 1101  1    1 1101  4    1 1101  5    1 1102  2    1 1102  4    1 1102  6    1   ・   ・    ・   ・   ・    ・   ・   ・    ・ よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

テーブル構造がまずいので ユニオンクエリで横から縦に変換することになります。 SELECT 生徒番号, 1 AS 講座番号, 1 AS 受講 FROM テーブル名 WHERE 講座1 = 1 UNION ALL SELECT 生徒番号, 2 AS 講座番号, 1 AS 受講 FROM テーブル名 WHERE 講座2 = 1 UNION ALL SELECT 生徒番号, 3 AS 講座番号, 1 AS 受講 FROM テーブル名 WHERE 講座3 = 1  ・・・ 全部1なら受講フィールドは必要ないとは思いますが・・

demiguru
質問者

補足

実行してみたのですが、少し期待した結果と異なりました。 上記の実行文を実行したのですが、講座番号1のみ表示され、252件表示されました。 講座番号1は、3名の予定です。 講座番号2は、23名 講座番号3は、5名 テーブルの総件数は、252名です。 生徒番号 講座番号 受講 1101  1    1 1102  1    1 1103  1    1 1104  1    1   ・   ・    ・   ・   ・    ・   ・   ・    ・

その他の回答 (1)

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

> 上記の実行文を実行したのですが、講座番号1のみ表示され、252件表示されました。 そんなはずはありません。 記述に間違いがあると思われます。 > SELECT 生徒番号, 3 AS 講座番号, 1 AS 受講 > FROM テーブル名 > WHERE 講座3 = 1 2箇所の数字 (上の場合は 3)を1から40まで変えるのですよ。

demiguru
質問者

補足

bonaronさま 何度もアドバイスありがとうございます。 上手くいきました。 ユニオンクエリで一行空けてから記述したところ上手くいきました。 上から詰めて記述してはいけないのでしょうか? ご迷惑おかけしました。ありがとうございます。

関連するQ&A

  • Access テーブルを分割してエクスポートしたい

    Access 2000のテーブルを指定した行数分に分割して、csv形式にエクスポートしたいと思っています。 例えば、100万件のデータを20万件×5ファイル、というイメージです(対象件数/分割件数ともに一定ではありません) 自分で考えてみたのですが、上位20万件をクエリ→削除クエリ→上位20万件をクエリ→削除クエリ・・・という 方法しか思い浮かばず、もっと簡単に出来る方法をお教えいただければと思います。 よろしくお願いします。

  • ACCESS97で テーブルの更新について

    ACCESS97で 相談したいことがあります。 定期的にあるテーブルを作成する時、 (1)テーブル作成クエリーを毎回 実施する方法と (2)元々テーブルを作っておいて  毎回、全件削除クエリー、全件追加クエリーを実行する 方法などがあります。  得られる結果は同じです。 この時、毎回テーブル作成クエリーを実施すると ムダにアクセス自体のファイルが大きくなったり データベースが壊れることが多い と聞いたので (2)の方にしたのですが、処理時間が(1)よりも掛かってしまいます。 そこで、上記(1),(2)に関する方法はどちらの方がお勧めでしょうか? ※ 件数は100000件 くらいあります。

  • ACCESS2000でのテーブルの結合について

    初歩的な質問で恐縮ですが ACCESS2000を使用しテーブルの構造が(フィールド)同じもの(但し入っているデータは異なります)あります。 このテーブルは別々のまま保存した状態でクエリーでひとまとめにして表示させたいのですが 例えば テーブルAには300件 テーブルBには200件 テーブルCには100件の同一構造のデータがあった場合 クエリーDとしてA+B+Cで600件が表示されクエリーDのデータを修正した場合それぞれのテーブルのデータに反映させるようにしたいのです。 以上よろしくお願いいたします。 

  • アクセスのテーブルをくっつける方法

    条件として、全く同じデータ構造のテーブルが複数ある場合、それらを一つのテーブルに追加する方法を教えてください。 すくなければ、コピー、ペーストするのですが・・・ クエリーでできればうれしいですが。 宜しくお願いいたします。

  • Access 複数テーブルのリレーションシップ

    Access2013  4種類の名簿をそれぞれのテーブル(4種類)で管理してありますが、 同じ方(氏名)が4種類の名簿全部には無く、2つや3つの名簿にばらばらにあります。  この4つのテーブルを同時に表示し入力できる分割フォームをつくりたいのですが、 この際の、4つテーブルの氏名をリレーションシップする結合プロパティの設定方法を教えて下さい。 あるいは、クエリのそれぞれのテーブルのフィールド(氏名)の抽出条件になんと書き入れたらよいか。教えて下さい。 宜しくお願いします

  • accessのサブフォームの更新

    いつもお世話になっています。 サブフォームの件でどうしても解らないところがあります。 受講者名簿テーブル 受講者番号、受講者名、受講者住所・・・ 受講者予約テーブル 受講者番号、日付、授業内容 上記の2つのテーブルでそれぞれフォームを作成していて、メインが「受講者名簿F」サブが「受講者予約F(表形式)」、受講者番号でリレーションをしています。 受講者予約テーブルをもとに、日付で検索できるように「受講者日付検索Q」というクエリを作成しました。 「受講者名簿F」のメインテーブルに「日付検索」というのを作成して、「受講者日付検索Q」をもとにしたフォームを開くようにしています。 今回、行いたいことは「日付検索」ボタンの隣に「更新」というボタンを作成し、「日付検索」で表示されたフォームにデータ変更をした際、画面を閉じた後で サブフォーム「受講者予約F(表形式)」の画面に変更が反映されるようにしたいのですが、やり方が思いつきません。 よろしくお願い致します。

  • 一対一のテーブル分割(ACCESS2003)

    ACCESS2003にて、フィールド数が上限の255、レコード数がおよそ1万件の商品マスタテーブルを作ったとします。入力必須フィールドは主キーである商品ID、あと商品名ぐらいで、あとは商品によって入力したりしなかったりするフィールドで、テーブルを開くと空欄が非常に多く目立ついわゆるスカスカの状態になっているとします。そこで商品マスタテーブルを数個に分割(商品の価格情報、商品の品質情報等々)し、商品IDを主キーにもたせ一対一の外部結合でつなげて、密度の濃い(?)テーブルを複数作ったほうが、ファイルサイズの縮小やクエリ等のパフォーマンス向上にメリットがあるのでしょうか?(一対一の結合はあまり使用しないのが一般的なようですが、このような場合使用すべきでしょうか?)教えて頂きたくお願いいたします。

  • アクセス:数値型のデータを検索する方法

    Dlookupをつかって検索する方法です。 以下のようなテーブルがあります <仕入れ伝票> 商品番号:数値型 種類;テキスト型 商品番号.種類 1,リンゴ 2,バナナ 3,なし <在庫表> 種類:テキスト型 番号:数値型 番号,種類 1 2 3 在庫表の商品名を示すために、次のようなクエリを書きましたがエラーになります。想像するにcriteriaの書き方が間違っており、探している値(数値)を見つけられていないのだと思います。 UPDATE 在庫表 SET 在庫表.種類 = (DLookUp("種類","仕入れ伝票","初品番号='" & [番号] & "'")); どのように直したらいいのか教えてください。

  • Access VBA 抽出したレコードをフィールドを増やして別テーブルに追加する方法

    2つのクエリーで抽出したレコードを結合し、そのレコードにID番号をつけて別のテーブルに追加することはできないでしょうか? 1枚のガラスの値段表を作りたいと考えています。 使用するテーブルは、1つ目がサイズ表でサイズ番号と2つの辺の長さの3つのフィールドからできています。2つ目はガラスの種類表で種類番号と種類名の2つのフィールドでできています。3つ目は値段表で上の2つの表の5つのフィールドにID番号と値段の2つのフィールドがあり全部で7つのフィールドです。 いま、フォームにサイズ表と種類表のサブフォームをつくり、それぞれ結合したいレコードを表示させています。そこからフォームに値段を入力し登録ボタンをクリックすると値段表に新しいレコードを追加するような登録ボタンを作りたいです。 簡単な例でも構いません。 VBAがわかる方、教えてください。

  • ACCESS2000 テーブルの更新方法

    テーブルAがデータベース(商品番号、単価)が入力されています。 テーブルBが入庫されたデータ(オーダー番号、商品番号、個数)が入力されてます。 クエリで 入庫されオーダー番号を入力すると、テーブルBから入荷した商品番号、個数、テーブルAから単価が表示されるようになっています。 商品番号でリンクさせている状態です。 そこで単価に変更があった場合、この時点でテーブルAの単価を上書き訂正したいのですが、入力できませんでした。 何かよい方法はありますか?アクセスはじめたばかりでよくわかりませんが、よろしくお願いします。

専門家に質問してみよう