• 締切済み

テーブルの結合と主キー(1,2,3・・という連番)の追加について

アクセス初心者です。 よろしくお願いします。 今テーブル1には 列1  列2  列3 旅館  高   みかん ホテル     りんご 民宿  中   なし というデータがあり、 テーブル2には 列1  列2   えび  さけ いくら 卵 鳥 というデータがあったとして、 この二つをただ単純に 列1  列2  列3   列4   列5 旅館  高   みかん  えび   さけ ホテル     りんご  いくら 民宿  中   なし   卵              鳥 というように横にくっつけたいのですが それができません。 また、テーブル1,2とも主キーがないため1,2,3、という連番を振りたいのですが、これがエクセルのように簡単にはできないのです。 経験者の方には簡単かもしれませんが、いろいろ調べてもわかりませんでした。 仕事で使うことですので、申し訳ないのですが、教えていただけないでしょうか。   

みんなの回答

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.5

No.3です。 > #3を面白いと思って ありがとうございます(笑) > 連番を振る前に当該フィールドをすべて Null にしなければならない これについては、更新クエリで対応するのがよろしいかと。 > 10万件もあると、 頑張って下さい(笑) まあ、あくまで急場しのぎの方法でしょうからね、これは。 ちなみにこの方法、2番目に「3」を入れると「1,3,5,7・・・」という形で連番が入っていきますので、参考までに。

noname#182251
noname#182251
回答No.4

#3を面白いと思って暇つぶしに試してみました。マイクロソフトらしい。 >3)下向きカーソルキー(「↓」)を押して2番目のレコードに移動し(決して行き過ぎないこと)、「2」を入力 >4)下向きカーソルキーを長押し クエリからデータシートビューに切り替えると、望んだ順番で連番がふれるんですね。 欠点としては、連番を振る前に当該フィールドをすべて Null にしなければならないことと、スピードが極端に遅いことでしょうか。10万件もあると、キーの上に重しをのせてどこかで待機するのかな(^^;

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

連番のつけ方: 1)連番を割り当てたいテーブルに「数値型」のフィールド(例えば「ID」と命名)を新設して保存 2)データシートビューに切り替え、先頭レコードの「ID」に「1」を入力  ※この際、決してEnterなどで他のフィールドに移動しないこと 3)下向きカーソルキー(「↓」)を押して2番目のレコードに移動し(決して行き過ぎないこと)、「2」を入力 4)下向きカーソルキーを長押し これで、カーソル移動したレコードに順番に数字が入力されていきます。 ・・・かなり邪道な方法です(笑)

noname#182251
noname#182251
回答No.2

データベースを使用するならば「データベース的感覚」を身に着けましょう。色々ありそうですが、取り敢えず三つ 1.主キーは必ず付ける 主キーがないとリレーションが曖昧になったり、ADO接続で更新が出来なかったり、問題が多いです。使わなくても弊害となるのはディスクスペースを僅か余計に使うだけです。テーブル設計時に主キーを付けないと警告が出ますが、これはマイクロソフトに多い「余計なお世話」とはちょっと違うようです 2.データベースは並び順を保証しない アクセスはユーザーが最後に指定した並び順を記憶するようですが、一般的に並び順は保証されません。クエリで明示的に並び順を指定しましょう 3.データベースはテーブルをまたぐ関係に関知しない 並び順が保証されないので、「横並び関係」も保証されません。テーブル間の横並びは SELECT Aテーブル.*, Bテーブル.* FROM Aテーブル INNER JOIN Bテーブル ON Aテーブル.KEY1 = Bテーブル.KEY1; のようにクエリで指定しましょう(SQL文で書きましたが、実際にはクエリのデザインビューからマウスによる指定でよいでしょう)。 このような感覚になじまないならば、データベースよりもエクセルなどを使用した方が快適で能率良く仕事が出来るでしょう。 連番に関して、オートナンバー型使用による解決は「理論上あり」ですが、実用上は問題が多すぎて?です。 長くなるので、「もっと知りたい」という補足があればまた書きます。

  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.1

テーブルの定義を変えて良いなら、列を追加してオートナンバー型にしてやればOKです。 主キーが存在しない、上記説明のテーブル1,2を単純に結合するのは、そのままでは一筋縄では行きませんね。 それぞれのテーブルの参照クエリーを作成してやり、そのクエリーでオートナンバー型の列を用意してやれば仮想的に主キーが振られますから、そのクエリー同士で結合してやる、という方法しか思い付きません。

関連するQ&A

  • 2つのテーブルを結合してデータ抽出時に

    2つのテーブルからデータを取得したいです。 結合し、データの取得を試みてますが、キーに対して空白の行が取得できません。どうしたらよいでしょうか?助けてください。 Aテーブル   Bテーブル 1 100 A       1 みかん 2 150 B       2 りんご 4 200 D       3 すいか 5 300 E       4 なし 6 500 F       6 高級なし 上記のようなテーブルをくっつける時の話で求める値は以下なんですが… Cテーブル 1  100  A  みかん 2  150  B  りんご 3       すいか 4  200  D  なし 5  300  E 6  500  F  高級なし どちらかがデータなしでもキー(例の場合は1とかの数字です)があるもの は表示したいです。 どなたかわかるかた教えてください。お願いします。 ちなみに使用しているのはoracleです。

  • access テーブル結合の逆?

    Access2003 お世話になります。SQLで以下のようなデータを取得する場合、上手い方法はあるのでしょうか。なんだかとても簡単な事のような気がするのですが…… テーブルA: ---品名--- りんご みかん もも いちご テーブルB: ---品名--- りんご もも このテーブルBに入力されているレコードをテーブルAから"除外"して、結果として「みかん」と「いちご」だけが欲しいのです。 テーブルBのレコードが少なければ、直接 品名<>"りんご" とか書いてもいいのかもしれませんが、結合のようなSQLで一発でできてしまったりしないでしょうか。 access上で可能なスマートな方法があれば教えていただきたいです。 よろしくお願いいたします。

  • EXCELピボットテーブルの集計項目を追加したい

    ピボットテーブルで集計した結果に集計項目を追加したいのですが、 可能でしょうか? 追加したい項目は、数量合計÷担当件数です。 <元データ> 担当 支店 種目 数量 川上 東京  りんご 50 川上 名古屋 りんご 20 川上 埼玉  みかん 10 川上 埼玉  りんご 5 鈴木 大阪  りんご 25 鈴木 神戸  みかん 10 佐藤 福岡  みかん 30 <ピボットテーブル>       みかん  みかん  りんご   りんご 担当 合計数量 件数 合計数量 件数 佐藤 30  1 川上 10 1 75    3 鈴木 10   1 25    1 計 50 3 100    4     上記このテーブルに「みかん合計数量÷みかん件数」「りんご合計数量÷りんご件数」で 計算した項目「みかん平均」「りんご平均」を追加して、以下のようにしたいと思っています。 担当 みかん みかん平均 りんご りんご平均 佐藤 30 30.0 川上 10 10.0        75 25.0       鈴木 10 10.0        25 25.0       総計 50 16.7        100 25.0       以上

  • Accessで重複データを結合するには?

    こんにちわ、みなさん。 Access超初心者です。よろしくお願いします。 Accessのテーブルで下記のようなデータがあるとします。  店名  | 商品 |  A店  |リンゴ |  A店  |トマト |  A店  |ナシ  |  B店  |リンゴ |  B店  |みかん | これを下記のように店名ごとに商品名を結合したいのです。 (レポートではなく、テーブルにしたいです)  店名  | 商品        |  A店  |リンゴ;トマト;ナシ |  B店  |リンゴ;みかん    |   重複クエリーを使えばと思ったのですが、 思ったとおりにはなりませんでした。。 どうぞ、よろしくお願い致します。m(__)m ---------------------------------------- OSは、Windows 98 アプリケーションは、Access 2000 です ----------------------------------------

  • Accessでテーブルの文字列フィールドを連結する

    次のようなフィールドが2列のデータがあります。 1:りんご 1:みかん 1:バナナ 2:みかん 2:ぶどう 3:りんご 3:バナナ それを 1:りんご、みかん、バナナ 2:みかん、ぶどう 3:りんご、バナナ とクエリーでまとめたいのですが どのようにしたらよろしいでしょうか?

  • 1つのテーブルに重複している列ごとに行を結合する

    以前も同じ質問をしたのですが、 初心者すぎてどうしても自己解決できずに困っています。 sql server2008でつくったdbで テーブル名:sampleとして id   |a1    |b1 1    |りんご  |きゅうり 1    |みかん  |なす 2    |かき   |はくさい 2    |なし    |キャベツ 3    |もも    |ごぼう 3    |キウイ  |きのこ ↓ 1   |りんご/みかん|きゅうり/なす 2   |かき/なし   |はくさい/キャベツ 3   |もも/キウイ  |ごぼう/きのこ にするプログラムをvb.netでするにはどうしたらいいでしょうか? 親切な方、丸投げですいませんがよろしくお願いします。

  • 片方のテーブルに存在しないレコードの抽出する方法

    shop1テーブルに存在して、shop2テーブルに存在しないレコードを抽出させたいのですが、 どのようにSQLを書けば良いのでしょうか? よく知らないのですが、SQLでは結合?というジャンルの手法ですか? shop1テーブル nama num みかん 10 りんご 20 なし 30 いちご 50 shop2テーブル name num みかん 55 りんご 44 なし 33

  • 同名の値の最小値、最大値を求めるには?

        A列   B列 1行  りんご   3 2行  りんご   5 3行  なし    2 4行  なし    3 5行  なし    1 6行  なし    7 7行  みかん  2 8行  みかん  2 9行  みかん  3 上のようなデータで、りんご、なし、みかんについてそれぞれの最小値・最大値を別のセルに表示させるには、どんな関数を使ったらいいでしょうか。応用したい実際のデータは、A列の種類が200ほど、それぞれの種類のデータ数は1~80くらいあります。 よろしくお願いします。

  • エクセルで「セルを結合して中央揃え」を大量にしたい

    質問致します。 エクセル2007を使用しています。 例えば A列      B列 りんご     青森 りんご     長野 りんご     福島 みかん     愛媛 みかん     和歌山 上記のように入っていて、 A列のりんごの入力されている3つのセルを選択し「セルを結合して中央揃え」をしたいのですが それをひとつずつ作業するのではなく、みかん、その下にも同じ言葉が複数あってまた違う言葉が・・・ というデータなのですがこれを簡単にセルを結合する方法はないでしょうか。 B列はそのまま生かして使用します。 イメージは以下のようになります。 A列        B列           青森 りんご      長野           福島 みかん      愛媛           和歌山 よろしくお願いします。

  • 動的なテーブルで。

    初心者ですが、mysql5+php5を使いなんとかテーブルを作りました。 たとえば100件のレコードがあってnameの項目(たとえばみかん)をクリックすると詳細ページ(リンク)。ということがしたいのですが、 phpとかJavaScriptなどで定義するものなのでしょうか? それともDreamweaver 8などでリンク付けさせるものなのでしょうか? 教えてくださいお願いします。 +-------+------+--------+ | name | ad | tel  | +-------+------+--------+ |りんご |青森 |03.... | |みかん|愛媛 |02?.... | | なし |千葉 |01.....|